Szukaj…
Elementy
Elementy dostarczane z nawiasami kątowymi są najbardziej widocznym elementem składowym XML.
Elementy mogą być puste, w którym to przypadku są wykonane z pustego znacznika (zauważ końcowe ukośnik):
<an-empty-element/>
Lub mogą mieć treść, w którym to przypadku mają znacznik otwierający (bez ukośnika) i zamykający (początkowy ukośnik):
<a-non-empty-element>Content</a-non-empty-element>
Elementy mogą się zagnieżdżać (ale tylko między tagami otwierającymi i zamykającymi):
<parent-element>
<child-element/>
<another-child-element>
Some more content.
</another-child-element>
</parent-element>
Nazwy elementów nazywane są QNames (nazwy kwalifikowane). Wszystkie powyższe elementy nie znajdują się w przestrzeni nazw, ale nazwy elementów można również zdefiniować w przestrzeni nazw przy użyciu takich prefiksów:
<my-namespace:parent-element xmlns:my-namespace="http://www.example.com/">
<my-namespace:child-element/>
<my-namespace:another-child-element>
Some more content.
</my-namespace:another-child-element>
</my-namespace:parent-element>
Przestrzenie nazw i nazwy elementów są opisane bardziej szczegółowo w tej części dokumentacji .
Atrybuty
Atrybuty to pary nazwa-wartość powiązane z elementem.
Są one reprezentowane przez wartości w pojedynczych lub podwójnych cudzysłowach wewnątrz znacznika elementu otwierającego lub znacznika pustego elementu, jeśli jest to pusty element.
<document>
<anElement foo="bar" abc='xyz'><!-- some content --></anElement>
<anotherElement a="1"/>
</document>
Atrybuty nie są uporządkowane (w przeciwieństwie do elementów). Następujące dwa elementy mają te same zestawy atrybutów:
<foo alpha="1" beta="2"/>
<foo beta="2" alpha="1"/>
Atrybutów nie można powtórzyć w tym samym elemencie (w przeciwieństwie do elementów). Poniższy dokument nie jest dobrze sformułowany: ponieważ atrybut <foo a="x" a="y"/>
a
pojawia się dwukrotnie w tym samym elemencie.
Poniższy dokument jest dobrze sformułowany. Wartości mogą być identyczne, to nazwa atrybutu, której nie można powtórzyć.
<foo a="x" b="x"/>
Atrybuty nie mogą być zagnieżdżone (w przeciwieństwie do elementów).
Tekst
Tekst składa się ze wszystkich znaków spoza jakiegokolwiek znacznika (znaczniki elementu otwierającego, znaczniki elementu zamykającego itp.).
<?xml version="1.0"?>
<document>
This is some text and <b>this is some more text</b>.
</document>
Dokładna terminologia XML dla tekstu to dane znakowe . Specyfikacja XML faktycznie używa tekstu słowa dla całego dokumentu XML lub analizowanej encji, ponieważ definiuje XML na poziomie składniowym. Jednak niektóre modele danych, takie jak XDM (XQuery i XPath Data Model), które reprezentują dokumenty XML jako drzewa, odnoszą się do danych znakowych jako węzłów tekstowych , tak że tekst jest często rozumiany jako synonim danych znakowych w praktyce.
Dane znakowe nie mogą zawierać znaku <
- byłoby to interpretowane jako pierwszy znak znacznika elementu otwierającego - nie może również zawierać sekwencji znaków ]]>
. Zamiast tego odpowiednie znaki muszą być poprzedzone znakiem encji.
<?xml version="1.0"?>
<document>
It is fine to escape the < character, as well as ]]>.
</document>
Dla wygody można także uciec od większej części tekstu za pomocą sekcji CDATA (ale sekwencja ]]>
jest nadal niedozwolona z oczywistych powodów):
<?xml version="1.0"?>
<document>
<![CDATA[
In a CDATA section, it is fine to write < or even & and entity references
such as & are not resolved.
]]>
</document>
Komentarze
Komentarze w XML wyglądają tak:
<!-- This is a comment -->
Mogą pojawiać się w treści elementu lub na najwyższym poziomie:
<?xml version="1.0"?>
<!-- a comment at the top-level -->
<document>
<!-- a comment inside the document -->
</document>
Komentarze nie mogą pojawiać się wewnątrz tagów ani wewnątrz atrybutów:
<element <!-- comment with -- inside --> />
lub
<element attr="<!-- comment with -- inside -->"/>
nie są dobrze uformowane.
Sekwencja znaków --
nie może pojawić się w środku komentarza. To nie jest dobrze sformułowany XML:
<!-- comment with -- inside -->
Komentarze w XML, w przeciwieństwie do innych języków, takich jak C ++, są częścią modelu danych : są analizowane, przekazywane i widoczne dla aplikacji używającej.
Instrukcje przetwarzania
Instrukcja przetwarzania służy do bezpośredniego przekazywania niektórych informacji lub instrukcji do aplikacji za pośrednictwem analizatora składni.
<?my-application some instructions ?>
Token za początkowym znakiem zapytania (tutaj my-application
) jest nazywany celem i identyfikuje aplikację, do której skierowana jest instrukcja. To, co następuje, nie jest dalej sprecyzowane, a interpretacja zależy od aplikacji. Odniesienia do encji i znaków nie są rozpoznawane.
Może pojawić się na najwyższym poziomie lub w treści elementu.