Chápu důvody, proč byla vytvořena většina entit HTML, ale nerozumím účelu za entitou ampersand HTML. &
obsahuje více bitů než &
symbol a již má &
již uvnitř!
Proč bylo rozhodnuto, že ampersandy by měly být kódovány ve formátu, který vyžaduje více dat, namísto pouhého použití symbolu?
Komentáře
- Je to, jako bychom měli způsob, jak uvést nabídku do jiné nabídky. Počítače již mají tento problém : kód mohou být data v jiné situaci a data mohou být kód. To je v čem se počítače liší od běžných strojů a v čem se lidský jazyk liší od zvuků zvířat. Teď jděte do toho a odkazujte na sebe!
Odpovědět
Abyste se vyhnuli nejednoznačnosti. Předpokládejme, že chcete napsat web HTML. Napíšete řádek: „Chcete-li napsat doslovný <, musíte napsat & lt ;.“ Nyní to zapíšu do HTML:
<p>To write a literal < you have to write <.
… oops. Aby to fungovalo, musíte mít nějaký způsob, jak odlišit znak &
od syntaxe HTML počínaje &
. Proto musíte psát:
<p>To write a literal < you have to write &lt;.
… které se vykreslí správně.
Komentáře
- Řekl bych, že je to umožnit nejednoznačnost. Umět zahrnout dvě úrovně interpretace do jednoho kontextu.
- @ user251748 To ‚ neumožňuje dvojznačnost, ‚ vysvětluje to.
Odpovědět
Vypadá to, že to jde až k SCRIPTU, který byl vynalezen v roce 1968.
hrubě řečeno, SCRIPT se stal SCRIPT / VS, který se stal GML, který se SGMLguid, který se stal HTML
Zde je původní článek představující SCRIPT:
http://web.mit.edu/smadnick/www/papers/J002.pdf
Proč zvolit &
? Představte si, že jste v terminálovém okně. Nemáte myš. Pomocí kurzorových kláves nemůžete procházet obrazovku. Můžete psát pouze na příkazovém řádku. Chcete-li odstranit řádek, zadejte , pro smazání znaku zadejte @
Na konci můžete vidět ¢ se používá k označení únikové postavy. cent býval na klávesnicích (shift 6), ale byl vynechán. (něco společného s ascii) většina klávesnic ji nahradila ^, ale některé s ¬
Takže při programování ve SCRIPTu máte najednou velmi těžké psát únikovou postavu na nových počítačích. Musíte vybrat náhradní znak. Pokud použijete jeden ze symbolů na stejné klávesě, někteří lidé ji nebudou moci psát, protože výrobci kláves se stále hádají.
Musíte si vybrat náhradní znak úniku za ten, který býval na klávesě 6. Co si vyberete?
Komentáře
- Nemyslím si ‚ vaši odpověď opravdu odpovídá na otázku, ale opravdu se mi opravdu líbí vaše odpověď.
- @ChrisG Toto je jediná odpověď na položenou otázku: proč je & úniková postava v HTML? Vzhledem k tomu, že je přijata odpověď vysvětlující, co je znak úniku, je otázka pravděpodobně špatně vyjádřena.
- @DavidArno Ale položená otázka nebyla ‚ t proč & je znak úniku, proto & musí uniknout jeho f.
- Je pravda, že jsem musel otázku vyložit o něco hlubší. Ale bylo zajímavé zkoumat odpověď
- @SebastianRedl, ano, teď to vidím. Jak je však otázka formulována, četl jsem ji jako “ proč se & používá jako únikový znak, když & sám pak musí uniknout? “ Naštěstí jsou někteří z vás lepší ve čtení špatně formulovaných otázek než já, takže co chtěl OP vědět dostal odpověď 🙂
Odpověď
V jakémkoli datovém formátu musí být únikový mechanismus sám uniknut. Úniková postava je speciální postava.
Například chci zobrazit tento text:
Ampersandům unikají znaky jako
&
Pokud píšu tento HTML jako
<p>Ampersands are escaped like <code>&</code>
zobrazí se jako:
Ampersandům unikají jako
&
Takže vlastně musím napsat:
<p>Ampersands are escaped like <code>&amp;</code>
který se zobrazuje správně jako:
Ampersandům unikají jako
&
V mnoha jazycích je zpětné lomítko únikem charakter. Potom bude muset být doslovný řetězec C:\projects
uniknut jako C:\\projects
.
Pokud má být použit datový formát být schopen reprezentovat libovolná data, potřebuje buď známou délku, nebo oddělovač. Zpracování známých délek je v lidsky upravitelných formátech nepraktické. Ale pokud máme oddělovač, musí to být možné uniknout. Potřebujeme tedy únikový mechanismus a únikový mechanismus musí uniknout sám. Jedním z minimálních řešení je použití oddělovače jako znaku escape. Např. pro oddělovač "
lze řetězec don"t do that
kódovat jako "don""t do that"
.
Komentáře
- Postava ASCII Escape byla původně navržena pro tento přesný účel. Jeho celé jméno je Data Link Escape . Použil jsem to dříve v situaci modem / mux.
Odpověď
Protože „“ spouští entitu, takže její použití samo o sobě není platné HTML (ačkoli některé prohlížeče jej mohou akceptovat, není to zaručeno).
Komentáře
- Osamělé ampersandy jsou v HTML v pořádku, pokud nevytvoří nejednoznačný ampersand , tj. odkaz na pojmenovaný znak, který není ‚ t definované ve standardu HTML. Jinak jsou ampersandy dobře definované.
- @amon – jistě, ale ‚ stojí za zmínku, že definice, kdy ‚ re enabled se lišilo mezi různými verzemi HTML (například HTML2 je povolil pouze v případě, že nebyly ‚ t následovány alfanumerickým znakem, bez ohledu na to, zda následoval středník) , a že i při nejpřísnější definici musíte být schopni uniknout jim za některých okolností. Ačkoliv to HTML umožňuje, SGML ani XML to nedělají, takže analyzátory SGML s HTML DTD selžou a analyzátory XHTML to ‚ nepřijmou. Proto bych nedoporučoval ‚ nedoporučovat toto zařízení skutečně používat.
- Nejprve existoval HTML. Pak nastal chaos, protože každý prodejce prohlížečů dělal, co chtěl. Serious Engineers ™ se toho chaosu nasytili a vytvořili XHTML. Ale ruční psaní XML je naštvaný, takže chaos pokračoval. Nakonec byl chaos kodifikován a nazván HTML5. Analyzuje chaos v pohodě, ale přesně definovaným způsobem. Už není užitečné interpretovat HTML5 jako dialekt SGML. A kromě XHTML nebyl HTML nikdy XML. Ale každý vzdáleně aktuální prohlížeč nebo analyzátor HTML si poradí s HTML5 v pohodě, alespoň na syntaktické úrovni.
- @amon: Ruční psaní HTML je naštvané, pokud vás nenajde čtení specifikace HTML5 o zábavě při obnově chyb , ‚ nic neříká, jak bude analyzátor interpretovat, jak se text HTML stane DOM, protože ‚ je příliš mnoho divných, starších rohové případy a různé způsoby psaní stejné věci. Pokud svůj HTML stejně neomezíte na podmnožinu kompatibilní s XHTML, v takovém případě prostě nezapište skutečné XHTML.
Odpovědět
Každý programovací jazyk nebo skriptovací jazyk má své jedinečné identifikátory nebo můžete říci vyhrazená klíčová slova, která vývojáři v kódu nemohou použít. Některé znaky jsou také rezervovány v HTML. Ampersand (&) se používá jako entita k zobrazování vyhrazených znaků v HTML. Některé příklady jsou následující.
< >