Grundregler a
<?xml version="1.0" encoding="utf-8"?>
<-- kommentar, t.ex filnamn -->
<ROOT>
<El1>Text1</El1>
<El2>Text2</El2>
...
</ROOT>
<-- kommentar, t.ex filnamn -->
<ROOT>
<El1>Text1</El1>
<El2>Text2</El2>
...
</ROOT>
<?xml version="1.0" encoding="utf-8"?>
<ROOT>
< ELEMENT Attr1="val1" Attr2="val2" ... >
<El1>Text1</El1>
<El2>Text2</El2>
...
</ELEMENT>
< ELEMENT Attr1="val1" Attr2="val2" ... >
<El1>Text1</El1>
<El2>Text2</El2>
...
</ELEMENT>
...
</ROOT>
<ROOT>
< ELEMENT Attr1="val1" Attr2="val2" ... >
<El1>Text1</El1>
<El2>Text2</El2>
...
</ELEMENT>
< ELEMENT Attr1="val1" Attr2="val2" ... >
<El1>Text1</El1>
<El2>Text2</El2>
...
</ELEMENT>
...
</ROOT>
- Exakt ett rotelement (toppelement)
- Skillnad på stora och små bokstäver
- Tagnamn får inte börja med "xml"
- Tagnamn måste börja på bokstav eller understrykningstecken. följt av noll eller flera bokstäver, siffror, '.', '-', '_'
- Tagvärde får inte innehålla ", ', <, & eller ]]> men entitetsreferens eller CDATA avsnitt
- Attributnamn har samma regler som tagnamn
- Attributnamn får bara finnas en gång för en tag
- Attributvärden måste vara inom paranteser. " eller '
- Attributvärde får inte innehålla ", ', <, & eller ]]> men entitetsreferens eller CDATA avsnitt
- Alla element måste ha en starttagg och en sluttagg (<tag>...</tag>) eller bestå av en tagg med snedsträck efter tagnamnet (<tag/>)
- Elementen måste vara korrekt nästlade. t.ex är detta ej korrekt : <b><i>text</b></i>
Encoding attributet kan förutom utf-8 också ha t.ex utf-16, Latin-1, ISO-0054-1, ISO-0059-1 och ISO-0059-2 beroende på språk, Se språk
Om ej godkända tecken finns i texten man vill använda kan entiter,
teckenreferenser eller CDATA-avsnitt användas.
ex. <el><![CDATA[jag&du]]></el>, &,  
Se Teckenentiteter
<avsnitt xml:space="preserve" | "default"> bevarar luft mellan tecken
<avsnitt xml:lang="sv"> Även "en", "en-GB", "en-US" m.fl
Bearbetningsinstruktion har formatet <?app instruktion> och får inte innehålla luft mellan < och ?
Namnområden
<?xml version="1.0" encoding="utf-8"?><ROOT xmlns:typ1="http://www.where.COM/Typ1"
xmlns:typ2="http://www.where.COM/Typ2">
<typ1:El1>Text1</typ1:El1>
<typ1:El2>Text2</typ1:El2>
<typ2:El1>Text1</typ2:El1>
<typ2:El2>Text2</typ2:El2>
...
</ROOT>