Pytanie w sprawie comments, xml – Komentarze XML i „-”

51
<!-- here is some comment --
                            ^
                            |
                    what can be here apart from '>'?

XML wydaje się nie lubić „-” wewnątrz komentarzy. Czytałem gdzieś, że „-” przełącza niektóre tryby wewnątrz<! ... > rzecz, ale<!-- -- -- --> (parzysta liczba--s) też wydają się być nieważne. Jeśli jest to jakaś historyczna cecha, co to jest „pro” część? (Część „contra” to niemożność posiadania-- w komentarzach).

Jaki jest powód komplikowania przetwarzania komentarzy, nie tworząc końca „->” komentarza i pozwalając na „-” wewnątrz?

Twoja odpowiedź

4   odpowiedź
20

-- nie jest dozwolone dla kompatybilności z SGML. ZNa SGML i HTML:

Biała przestrzeń nie jest dozwolona między otwartym znacznikiem deklaracji znaczników („<!”) A otwartym ogranicznikiem komentarza („-”), ale jest dozwolona między komentarzem separator zamknięty („-”) a ogranicznikiem ogranicznika deklaracji znaczników ( „>”). Częstym błędem jest dołączanie ciągu komentarza („---”) w komentarzu. Autorzy powinni unikać umieszczania w komentarzach dwóch lub więcej sąsiadujących myślników.

Więc w SGML<! i> otwórz i zamknij „deklaracje znaczników” i-- otwiera i zamyka komentarze.

41

Z dokumentu norm:

http://www.w3.org/TR/REC-xml/#sec-comments

[Definicja: Komentarze mogą pojawiać się w dowolnym miejscu dokumentu poza innymi znacznikami; ponadto mogą pojawić się w deklaracji typu dokumentu w miejscach dozwolonych przez gramatykę. Nie są częścią danych znaków dokumentu; procesor XML może, ale nie musi, umożliwiać aplikacji pobieranie tekstu komentarzy.Dlazgodność, ciąg „-” (podwójny łącznik) nie może występować w komentarzach.] Odwołania do jednostki parametru nie mogą być rozpoznawane w komentarzach.

Powinno to zostać zmienione IMO, ponieważ mamy teraz parametry css, które zaczynają się od podwójnego myślnika i mogą znajdować się wewnątrz atrybutu stylu w elemencie SVG. Komentowanie tych elementów spowoduje zerwanie zgodności ze standardem XML, tylko z powodu jakiegoś starszego formatu, którego już nie ma. Waruyama
Więc „pro” to kompatybilność z SGML. Vi.
Nazwałbym to kompromisem inżynieryjnym. asawyer
34

Może to może być pomocne dla kogoś. Miałem problem, że chciałem skomentować parametr wiersza poleceń w XML, który zaczyna się od::

<arg line="-v --line-break 0" />  

tak naturalnie normalny sposób jak ten

<!-- <arg line="-v --line-break 0" /> -->

nie działa, ale dowiedziałem się, że jeśli- jest zastępowany przez jego odpowiednik UTF-8&#x002D; działa i może być tolerowany wewnątrz komentarzy.

Więc w moim przypadku sznurek

<arg line="-v &#x002d;&#x002d;line-break 0" />

jest poprawnie analizowany i może być częścią komentarzy.

Oczywiście wygląda to trochę brzydko, ale jeśli ktoś chce zachować ciąg - jako komentarz w swoim XML - myślę, że nadal jest lepszy niż nic.

Możesz także użyć sekwencji ucieczki&#45; która jest wersją escape ASCII i jest nieco krótsza niż wersja Unicode. drwatsoncode
lub&#x2D; (ascii / unicode w hex) Vojta
25

To jedna z tych głupich zasad w XML, ponieważ była w SGML i ludzie nie chcieli łamać kompatybilności. Dlaczego to jest w SGML, to chyba ktoś: prawdopodobnie dlatego, że zapisał trzy linie kodu w oryginalnym parserze.

Powiązane pytania