Înțeleg rațiunea din spatele motivului pentru care au fost create majoritatea entităților cu caracter HTML, dar nu înțeleg scopul din spatele entității HTML cu ampersand. &
conține mai mulți biți decât simbolul &
și are chiar și &
în interiorul său!
De ce s-a decis ca ampersand-urile să fie codificate în formatul care necesită mai multe date, în loc să se utilizeze doar simbolul?
Comentarii
- Este ca și cum avem un mod de a include o cotație într-o altă cotație. Calculatoarele au avut de mult această problemă : codul poate fi date într-o situație diferită, iar datele pot fi cod. Adică ce diferențiază computerele de mașinile obișnuite și ce diferențiază limbajul uman de zgomotele pe care le fac animalele. Acum mergeți mai departe și autoreferințați!
Răspuns
Pentru a evita ambiguitatea. Să presupunem că doriți să scrieți un site web despre HTML. Scrieți rândul: „Pentru a scrie un literal < trebuie să scrieți & lt ;.” Acum, pentru a scrie asta în HTML:
<p>To write a literal < you have to write <.
… oops. Pentru a funcționa, trebuie să aveți o modalitate de a distinge caracterul &
de sintaxa HTML începând cu &
. Deci, de aceea trebuie să scrieți:
<p>To write a literal < you have to write &lt;.
… care se redă corect.
Comentarii
- Aș spune că este permis ambiguitatea. Pentru a putea include două niveluri de interpretare într-un singur context.
- @ user251748 Că ‘ nu permite ambiguitatea, ‘ o clarifică.
Răspuns
Se pare că acest lucru se întoarce până la SCRIPT care a fost inventat în 1968.
aproximativ vorbind, SCRIPT a devenit SCRIPT / VS care a devenit GML care a devenit SGMLguid care a devenit HTML
Iată lucrarea originală care introduce SCRIPT:
http://web.mit.edu/smadnick/www/papers/J002.pdf
De ce să alegeți &
? imaginați-vă că sunteți într-o fereastră de terminal. nu aveți mouse. Nu puteți utiliza tastele cursorului pentru a parcurge ecran. Puteți tasta doar pe linia de comandă. dacă doriți să ștergeți o linie, tastați , pentru a șterge un caracter, tastați @
Puteți vedea spre final ¢ este folosit pentru a desemna un caracter de evadare. Centul era pe tastaturi (schimbarea 6), dar a fost scăzut. (ceva de-a face cu ascii) majoritatea tastaturilor l-au înlocuit cu ^ dar unele cu ¬
Deci, dintr-o dată, pentru a programa în SCRIPT, vă este foarte greu să tastați caracterul de evacuare pe computerele noi. Trebuie să alegeți un caracter de înlocuire. Dacă utilizați unul dintre simbolurile de pe aceeași tastă, unii oameni nu vor putea să-l introducă, deoarece producătorii de tastaturi încă se ceartă.
Trebuie să alegeți un caracter de înlocuire pentru cel care era pe cheia 6. Ce alegeți?
Comentarii
- Nu ‘ cred că răspunsul tău răspunde cu adevărat la întrebare, dar îmi place foarte mult răspunsul dvs.
- @ChrisG Acesta este singurul răspuns la întrebarea pusă: de ce este & caracterul de evadare în HTML? Totuși, deoarece un răspuns care explică ce caracter de evadare este acceptat, întrebarea este probabil slab exprimată.
- @DavidArno Dar întrebarea pusă nu a fost ‘ t de ce & este caracterul de evadare, de aceea & trebuie scăpat itsel f.
- Este adevărat că a trebuit să interpretez întrebarea la un nivel puțin mai profund. Dar a fost interesant să cercetăm răspunsul
- @SebastianRedl, da, văd asta acum. Cu toate acestea, modul în care este formulată întrebarea, l-am citit ca ” de ce se utilizează & ca caracter de evadare, când & atunci trebuie scăpat? ” Din fericire, unii dintre voi sunt mai buni la citirea întrebărilor formulate prost decât sunt eu, deci ce a vrut OP să știe am primit răspuns 🙂
Răspuns
În orice format de date, mecanismul de evadare trebuie să fie scăpat singur. Personajul de evadare este un personaj special.
De exemplu, vreau să afișez acest text:
Ampersandele sunt evadate ca
&
Dacă scriu acest HTML ca
<p>Ampersands are escaped like <code>&</code>
va fi afișat ca:
Ampersands sunt evadate ca
&
Deci, de fapt, trebuie să scriu:
<p>Ampersands are escaped like <code>&amp;</code>
care se afișează corect ca:
Ampersands sunt evadate ca
&
În multe limbi, bară inversă este o evadare caracter. Apoi, șirul literal C:\projects
va trebui scăpat ca C:\\projects
.
Dacă se presupune că un format de date să poată reprezenta date arbitrare, fie are nevoie de o lungime cunoscută, fie de un delimitator. Manipularea lungimilor cunoscute este dificilă în formatele editabile de om. Dar dacă avem un delimitator, acesta trebuie să fie evadabil. Deci, avem nevoie de un mecanism de evadare, iar mecanismul de evadare trebuie să scape de el însuși. O soluție minimă este să folosiți delimitatorul ca personaj de evadare. De exemplu. pentru un delimitator "
, șirul don"t do that
ar putea fi codificat ca "don""t do that"
.
Comentarii
- Caracterul ASCII Escape a fost conceput inițial pentru acest scop exact. Numele său complet este Data Link Escape . L-am mai folosit într-o situație de modem / mux.
Răspuns
Deoarece „” pornește o entitate, deci utilizarea ei de la sine nu este HTML valid (deși unele browsere o pot accepta, acest lucru nu este garantat).
Comentarii
- Ampersand-urile singure sunt OK în HTML, cu excepția cazului în care formează un ampersand ambigu , adică o referință de caracter numită care nu este t definit în standardul HTML. În caz contrar, ampersands-urile sunt bine definite.
- @amon – sigur, dar ‘ merită remarcat faptul că definiția când ‘ re allow a variat între diferite versiuni HTML (HTML2, de exemplu, le-a permis doar dacă nu erau ‘ t urmate de un caracter alfanumeric, indiferent dacă a urmat un punct și virgulă) și că, chiar și cu cea mai strictă definiție, trebuie să le puteți scăpa în unele circumstanțe. De asemenea, în timp ce HTML permite acest lucru, nici SGML, nici XML nu fac acest lucru, deci analizatorii SGML cu un DTD HTML nu vor reuși, iar analizatorii XHTML nu vor primi nici ‘. Prin urmare, nu aș recomanda ‘ să folosesc efectiv această facilitate.
- Mai întâi a fost HTML. Apoi a fost haos, deoarece fiecare furnizor de browsere a făcut tot ce le-a plăcut. Inginerii serioși ™ s-au săturat de acest haos și au creat XHTML. Dar scrierea XML manuală e de rahat, așa că haosul a continuat. În cele din urmă, haosul a fost codificat și numit HTML5. Analizează haosul foarte bine, dar într-un mod bine definit. Nu mai este util să interpretezi HTML5 ca un dialect SGML. Și, cu excepția XHTML, HTML nu a fost niciodată XML. Dar fiecare browser actualizat de la distanță sau analizor HTML se va ocupa foarte bine de HTML5, cel puțin la nivel sintactic.
- @amon: Scrierea HTML manuală e de rahat, cu excepția cazului în care citiți specificațiile HTML5 despre recuperarea erorilor , ‘ nu indică modul în care analizatorul va interpreta modul în care textul HTML devine DOM, deoarece există ‘ prea multe moșteniri ciudate cazuri de colț și moduri diferite de a scrie același lucru. Cu excepția cazului în care oricum vă restricționați codul HTML la un subset compatibil XHTML, caz în care de ce să nu scrieți doar XHTML real.
Răspundeți
Fiecare limbaj de programare sau limbaj de scriptare are identificatorii săi unici sau puteți spune cuvinte cheie rezervate care nu pot fi utilizate de dezvoltatori în cod. Unele caractere sunt, de asemenea, rezervate în HTML. Un semn comercial (&) este utilizat ca entitate pentru a afișa caractere rezervate în HTML. Unele dintre exemple sunt următoarele.
< >