Domanda

Ora sviluppio siti Web e interfacce XML da 7 anni e non è mai arrivato in una situazione, in cui era davvero necessario usare il &gt; per un >. Tutto il disambio potrebbe finora essere gestita citando <, &, " e ' solo.

Qualcuno è mai stato in una situazione (relativa a, ad esempio, elaborazione SGML, problemi del browser, XSLT, ...) in cui hai trovato indispensabile sfuggire al segno più grande di &gt;?

Aggiornare: Ho appena controllato con il XML Spec, dove dice, ad esempio, sui dati dei caratteri nella Sezione 2.4:

Dati dei caratteri

[14]      CharData       ::=      [^<&]* - ([^<&]* ']]>' [^<&]*)

Così anche lì, il > non è menzionato come qualcosa di speciale, tranne dalla sequenza finale di una sezione CDATA.

Questo singolo caso, dove il > è di qualsiasi significato, sarebbe la fine di una sezione CDATA, ]]>, ma poi di nuovo, se lo citi, la citazione (cioè la stringa letterale ]]&gt;) atterrerebbe letteralmente in produzione (poiché lo è CDATA).

È stato utile?

Soluzione

Non è necessario assolutamente perché quasi tutti gli interpreti XML capiranno cosa intendi. Ma usi comunque un personaggio speciale senza alcuna protezione se lo fai.

XML è tutto incentrato su semantico, e questo non è davvero conforme semantico.

Riguardo al tuo aggiornare, hai dimenticato questa parte:

La staffa angolare giusta (>) può essere rappresentata usando la stringa ">" e, per la compatibilità, essere fuggita usando entrambi " &gt; "o un riferimento al personaggio quando appare nella stringa" ]]> "Nel contenuto, quando quella stringa non segna la fine di una sezione CDATA.

Il caso d'uso fornito nella documentazione è più su qualcosa del genere:

<xmlmarkup>
]]>
</xmlmarkup>

Qui il ]]> La parte potrebbe essere un problema con i vecchi parser SGML, quindi dovere essere fuggito in = ]]&gt; per motivi di compatibilità.

Altri suggerimenti

ero solito una non 19 ore fa per passare un validatore XML rigoroso. Un altro caso è quando li usi effettivamente nel testo di contenuto HTML/XML (piuttosto che attributi), come questo: <.

Certo, un parser lassista accetterà quasi tutto ciò che lanci, ma se sei mai preoccupato per XSS, <è tuo amico.

AGGIORNAMENTO: ecco un esempio in cui devi fuggire > In Firefox:

<?xml version="1.0" encoding="utf-8" ?>
<test>
    ]]>
</test>

Certo, non è ancora un esempio di dover sfuggire a un solitario >.

Non tanto quanto un autore di (x) documenti HTML, ma più come utente di campi commenti scritti sciatti nei siti Web, che ti "offrono" per inserire HTML.

Voglio dire, se fai il tuo sito nel modo giusto, non codificheresti comunque i tuoi contenuti, giusto? Quindi la tua chiamata a htmlentities O qualunque cosa (da molto tempo non ci vediamo, PHP) si occuperà di sostituire personaggi speciali per te. Quindi sicuro, non digitare manualmente &gt; Ma spero che tu prenda le misure così > viene automaticamente sostituito.

I just thought of another example, where you need to quote > in HTML5 (not XHTML5) documents: If you need it in attributes without quotes (which is something, that can be argued of course).

<img src=arrow.png alt=&gt;>

should be equivalent to XHTML

<img src="arrow.png" alt=">" />

But then again, (?<!X)HTML is not SGML.

Imagine that you have the following text this is a not a ]]> nice day and you decide to surround it by CDATA sections <![CDATA[this is a not a ]]> nice day]]>.

In order to avoid that (and for allowing parsing of SGML fragments with unterminated marked sections), clause 10.4 of ISO 8879:1986 declares that the occurrence of ]]> outside a marked section is an error.

Also, in the times of SGML marked sections were very popular, as they were not only used for CDATA (as in XML), but also for RCDATA (only entities and character references allowed) and IGNORE and INCLUDE (which allowed for recognition of markup inside them).

For instance, in SGML one could write:

 <!ENTITY %WHATTODO "INCLUDE">
 <![%WHATTODO;[<b>]]&gt;</b>]]>

Which is equivalent to:

 <b>]]&gt;</b>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top