Rozumiem powody, dla których utworzono większość jednostek znakowych HTML, ale nie rozumiem, do czego służą encje ampersand i HTML. &
zawiera więcej bitów niż symbol &
, a nawet zawiera już &
!
Dlaczego zdecydowano, że znaki handlowe powinny być kodowane w formacie wymagającym większej ilości danych, a nie tylko za pomocą symbolu?
Komentarze
- To tak, jak mamy sposób umieszczania cytatu w innym cytacie. Komputery od dawna mają ten problem : kod może być danymi w innej sytuacji, a dane mogą być kodem. co sprawia, że komputery różnią się od zwykłych maszyn i co sprawia, że ludzki język różni się od dźwięków wydawanych przez zwierzęta. A teraz przejdź do samego siebie!
Odpowiedź
Aby uniknąć dwuznaczności. Załóżmy, że chcesz napisać o witrynie internetowej HTML. Piszesz wiersz: „Aby napisać literał <, musisz wpisać & lt ;.” Teraz, aby zapisać to w HTML:
<p>To write a literal < you have to write <.
… ups. Aby to zadziałało, musisz mieć jakiś sposób na odróżnienie znaku &
od składni HTML, zaczynając od &
. Dlatego właśnie musisz napisać:
<p>To write a literal < you have to write &lt;.
… który renderuje się poprawnie.
Komentarze
- Powiedziałbym, że ma to dopuścić niejednoznaczność. Aby móc uwzględnić dwa poziomy interpretacji w jednym kontekście.
- @ user251748 To ' nie dopuszcza dwuznaczności, ' wyjaśnia to.
Odpowiedź
Wygląda na to, że to sięga aż do SCRIPT, który został wynaleziony w 1968 roku.
Z grubsza rzecz biorąc, SCRIPT przekształcił się w SCRIPT / VS, który stał się GML, który stał się SGMLguid, który stał się HTML
Oto oryginalny artykuł wprowadzający SCRIPT:
http://web.mit.edu/smadnick/www/papers/J002.pdf
Dlaczego warto wybrać &
? cóż, wyobraź sobie, że jesteś w oknie terminala. Nie masz myszy. Nie możesz używać klawiszy kursora do przechodzenia ekran. Możesz pisać tylko w wierszu poleceń. Jeśli chcesz usunąć wiersz, wpisz , aby usunąć znak, wpisz @
Na końcu zobaczysz ¢ służy do oznaczenia znaku ucieczki. cent był kiedyś na klawiaturach (shift 6), ale został usunięty. (coś związanego z ascii) większość klawiatur zastąpiła go ^, ale niektóre z ¬
Więc nagle programując w SCRIPT, bardzo trudno jest wpisać znak ucieczki na nowych komputerach. Musisz wybrać znak zastępczy, jeśli użyjesz jednego z symboli na tym samym klawiszu, niektórzy ludzie nie będą w stanie go wpisać, ponieważ twórcy klawiatury nadal się kłócą.
Musisz wybrać zastępczy znak zmiany znaczenia na ten, który był na klawiszu 6. Co wybierasz?
Komentarze
- Nie ' nie myślę o twojej odpowiedzi naprawdę odpowiada na pytanie, ale naprawdę podoba mi się Twoja odpowiedź.
- @ChrisG To jedyna odpowiedź na zadane pytanie: dlaczego & jest znakiem ucieczki w HTML? Jednak skoro odpowiedź wyjaśniająca, jaki znak zmiany znaczenia jest akceptowana, pytanie jest prawdopodobnie słabo wyrażone.
- @DavidArno Ale zadane pytanie nie było ' t dlaczego & jest znakiem zmiany znaczenia, to dlatego & musi zostać zastąpiony znakiem zmiany znaczenia f.
- To prawda, musiałem zinterpretować pytanie na nieco głębszym poziomie. Ale badanie odpowiedzi było interesujące.
- @SebastianRedl, tak, teraz to rozumiem. Jednak ze względu na sposób sformułowania pytania czytam je jako „, dlaczego & jest używany jako znak zmiany znaczenia, gdy trzeba potem uciec? ” Na szczęście niektórzy z was są lepsi w czytaniu źle sformułowanych pytań niż ja, więc co chciał wiedzieć OP otrzymałem odpowiedź 🙂
Odpowiedź
W każdym formacie danych mechanizm zmiany znaczenia musi być samoczynnie chroniony. Znak ucieczki to znak specjalny.
Na przykład chcę wyświetlić ten tekst:
Ampersand są znakami ucieczki, takimi jak
&
Jeśli napiszę ten kod HTML jako
<p>Ampersands are escaped like <code>&</code>
zostanie wyświetlony as:
Ampersand są znakami ucieczki, takimi jak
&
Właściwie muszę napisać:
<p>Ampersands are escaped like <code>&amp;</code>
, który wyświetla się poprawnie jako:
Ampersand są znakami ucieczki, takimi jak
&
W wielu językach ukośnik odwrotny jest ucieczką postać. Następnie ciąg literału C:\projects
będzie musiał zostać zmieniony na C:\\projects
.
Jeśli format danych ma być w stanie przedstawić dowolne dane, potrzebuje znanej długości lub separatora. Obsługa znanych długości jest nieporęczna w formatach edytowalnych przez człowieka. Ale jeśli mamy separator, musi on być możliwy do uniknięcia. Potrzebujemy więc mechanizmu ucieczki, a mechanizm ucieczki musi sam uciec. Jedynym minimalnym rozwiązaniem jest użycie separatora jako znaku ucieczki. Na przykład. w przypadku separatora "
ciąg don"t do that
można zakodować jako "don""t do that"
.
Komentarze
- Znak ASCII Escape został pierwotnie zaprojektowany właśnie do tego celu. Jego pełna nazwa to Data Link Escape . Używałem go wcześniej w sytuacji modemu / muxa.
Odpowiedź
Ponieważ „” uruchamia jednostkę, więc używanie jej samodzielnie nie jest poprawnym kodem HTML (chociaż niektóre przeglądarki mogą to zaakceptować, nie jest to gwarantowane).
Komentarze
- Pojedyncze znaki handlowe są w porządku w HTML, chyba że tworzą niejednoznaczny znak & , tj. nazwane odwołanie do znaku, które nie jest ' t zdefiniowane w standardzie HTML. W przeciwnym razie znaki ampersandy są dobrze zdefiniowane.
- @amon – jasne, ale ' warto zauważyć, że definicja kiedy ' re allowed różni się w zależności od różnych wersji HTML (na przykład HTML2 dopuszcza je tylko wtedy, gdy nie są ' t, po których następuje znak alfanumeryczny, niezależnie od tego, czy następował po nim średnik) i że nawet przy najsurowszej definicji nadal musisz być w stanie uciec od nich w niektórych okolicznościach. Ponadto, podczas gdy HTML na to pozwala, ani SGML, ani XML tego nie robią, więc parsery SGML z HTML DTD nie powiodą się, a parsery XHTML wygrały ' i nie zaakceptowały tego. Dlatego nie ' nie polecałbym faktycznie korzystania z tej funkcji.
- Najpierw był HTML. Potem nastąpił chaos, ponieważ każdy sprzedawca przeglądarek robił, co chciał. Serious Engineers ™ mieli dość tego chaosu i stworzyli XHTML. Jednak ręczne pisanie XML jest do dupy, więc chaos trwał. Ostatecznie chaos został skodyfikowany i nazwany HTML5. Dobrze analizuje chaos, ale w dobrze zdefiniowany sposób. Interpretacja HTML5 jako dialektu SGML nie jest już użyteczna. Poza XHTML, HTML nigdy nie był XML. Ale każda zdalnie aktualna przeglądarka lub parser HTML poradzi sobie z HTML5 dobrze, przynajmniej na poziomie składniowym.
- @amon: Ręczne pisanie HTML jest do bani, chyba że czytanie specyfikacji HTML5 na temat odzyskiwania po błędzie jest fajne , ' nie wiadomo, jak parser zinterpretuje, w jaki sposób tekst HTML staje się DOM, ponieważ ' jest po prostu zbyt wiele dziwnych, starszych narożniki i różne sposoby pisania tego samego. Chyba że i tak ograniczysz swój HTML do podzbioru zgodnego z XHTML. W takim przypadku dlaczego nie napisać po prostu samego XHTML.
Odpowiedź
Każdy język programowania lub język skryptowy ma swoje unikalne identyfikatory lub możesz powiedzieć zastrzeżone słowa kluczowe, których programiści nie mogą używać w kodzie. Niektóre znaki są również zarezerwowane w HTML. Znak ampersand (&) jest używany jako jednostka do wyświetlania zastrzeżonych znaków w HTML. Oto niektóre przykłady.
< >