Jakie znaki są potrzebne do ucieczki w dokumentach XML?
Jakie znaki muszą być przechowywane w dokumentach XML lub Gdzie mogę znaleźć taką listę?
9 answers
Jeśli użyjesz odpowiedniej klasy lub biblioteki, zrobią to za Ciebie. Wiele problemów XML jest powodowanych przez konkatenację łańcuchów.
XML escape characters
Jest tylko pięć:
" "
' '
< <
> >
& &
Znaki specjalne zależą od miejsca użycia znaku specjalnego.
Przykłady można zwalidować w W3C Markup Validation Service .Tekst
Bezpiecznym sposobem jest ucieczka wszystkich pięciu znaków w tekście, jednak trzy postacie "
, '
i >
nie musi być w tekście:
<?xml version="1.0"?>
<valid>"'></valid>
Atrybuty
W atrybutach nie trzeba jednak uciekać przed wszystkimi pięcioma znakami, ponieważ znak>
w atrybutach nie musi być uciekany:
<?xml version="1.0"?>
<valid attribute=">"/>
Znak '
nie musi być unikany w atrybutach, jeśli cudzysłowy są "
:
<?xml version="1.0"?>
<valid attribute="'"/>
Podobnie, "
nie musi być unikany w atrybutach, jeśli cudzysłowy są '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Komentarze
Wszystkie 5 znaków specjalnych nie wolno unikać w komentarzach:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
CDATA
Wszystkie 5 znaków specjalnych nie mogą być przechowywane w sekcjach CDATA:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Instrukcje przetwarzania
Wszystkie 5 znaków specjalnych nie mogą zawierać w instrukcjach przetwarzania XML:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
XML vs. HTML
HTML ma własny zestaw kodów ewakuacyjnych , które obejmują dużo więcej znaków.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-02 13:27:27
Być może to pomoże:
Lista odniesień do encji znaków XML i HTML:
W dokumentach SGML, HTML i XML, konstrukcje logiczne znane jako znak na dane i wartości atrybutów składają się sekwencje znaków, w których każdy postać może manifestować się bezpośrednio (reprezentowanie siebie), lub może być reprezentowana przez szereg postaci nazywany referencją znakową, z czego istnieją dwa typy: numeryczny znak odniesienia i a charakter / align = "left" / Ten artykuł zawiera listę podmiot znak odwołuje się do tego są ważne w dokumentach HTML i XML.
Ten artykuł wymienia pięć predefiniowanych encji XML:
quot "
amp &
apos '
lt <
gt >
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-07 18:33:16
Zgodnie ze specyfikacją World Wide Web Consortium (W3C), Istnieje 5 znaków, które nie mogą pojawić się w dosłownej formie w dokumencie XML, chyba że są używane jako ograniczniki znaczników lub w komentarzu, instrukcji przetwarzania lub sekcji CDATA. We wszystkich pozostałych przypadkach znaki te należy zastąpić za pomocą odpowiedniego podmiotu lub odniesienia numerycznego zgodnie z następującą tabelą:
Oryginalny charakterXML zastąpienie podmiotuXML numeric replacement
> > >
" " "
& & &
' ' '
Zauważ, że powyższe encje mogą być używane również w HTML, z wyjątkiem ', który został wprowadzony z XHTML 1.0 i nie jest deklarowany w HTML 4. Z tego powodu, aby zapewnić kompatybilność wsteczną, Specyfikacja XHTML zaleca użycie zamiast tego " .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-03 12:38:30
Znaki specjalne różnią się dla znaczników i atrybutów.
Dla tagów:
< <
> > (only for compatibility, read below)
& &
Dla atrybutów:
" "
' '
Http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
Znak ampersand ( & ) i lewy nawias kątowy ( ) można przedstawić za pomocą string">", I musi, dla kompatybilności, być unikalny przy użyciu albo ">"lub odniesienie do znaku, gdy pojawia się w łańcuchu"]] > "w treści, gdy ciąg ten nie oznacza końca CDATA sekcja.
Aby wartości atrybutów zawierały zarówno pojedyncze, jak i podwójne cudzysłowy, apostrof lub znak jednokrotnego cytowania ( " ) może być reprezentowana jako " '", oraz znak podwójnego cudzysłowu (") jako """.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-27 21:39:32
Oprócz powszechnie znanych pięciu znaków [, &, ", '] chciałbym również uciec pionowy znak tabulacji (0x0b). Jest poprawny UTF-8, ale nie poprawny XML 1.0 i nawet wiele bibliotek (w tym libxml2) tego nie rozumie i po cichu wypisuje nieprawidłowy XML.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-25 18:23:37
Nowa, uproszczona odpowiedź na Stare, Często zadawane pytanie...
Uproszczona Ucieczka XML
-
Zawsze (90% Ważne do zapamiętania)
-
Wartości Atrybutów (9% Ważne do zapamiętania)
-
attr="
'
pojedyncze cudzysłowy'
są w porządku w cudzysłowach podwójnych."
-
attr='
"
podwójne cudzysłowy"
są w porządku w pojedynczych cudzysłowach.'
- Ucieczka
"
jako"
i'
jako'
w przeciwnym razie.
-
-
Komentarze, CDATA i instrukcje przetwarzania (0.9% ważne dla pamiętaj)
-
<!--
wewnątrz komentarze-->
nic nie musi być uciekane, ale żadne--
stringi nie są dozwolone. -
<![CDATA[
wewnątrz CDATA]]>
nic nie musi być uciekane, ale żadne]]>
stringi nie są dozwolone. -
<?PITarget
W PIs?>
nic nie musi być uciekane, ale żadne?>
stringi nie są dozwolone.
-
-
Ezoteryka (0.1% ważne dla pamiętaj)
- Escape
]]>
as]]>
unless]]>
is ending a CDATA section.
(zasada ta dotyczy danych znakowych w ogóle – nawet poza sekcją CDATA.)
- Escape
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-03 13:34:55
Skrócony od: http://en.wikipedia.org/wiki/XML#Escaping
Istnieje pięć predefiniowanych Bytów:
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
" wszystkie dozwolone znaki Unicode mogą być reprezentowane za pomocą numerycznego odniesienia. "Na przykład:
中
Większość znaków sterujących i innych zakresów unicode jest specjalnie wykluczona, co oznacza (myślę), że nie mogą wystąpić ani Escape, ani direct:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-15 07:53:58
To zależy od kontekstu. Dla zawartości jest to (chociaż łańcuch 3 zamiast jednego znaku). Dla wartości atrybutów jest to .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-04 14:36:52
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-02 14:17:38