Först en kort definition
PCDATA, eller som det skrivs i DTD:n #PCDATA, betyder Parsed Character DATA, 
  d.v.s tolkad textdata
  CDATA betyder Character DATA, d.v.s otolkad textdata
Mer om DTD
ANY
Man kan släppa alla tyglar och säga att man godkänner vad skit 
  som helst med ordet ANY i DTD:n. Filen måste dock fortfarande vara well-formed, 
  och eventuella tags måste finnas deklarerade. Nedan visas ett exempel 
  på en XML fil som använder sig av en intern DTD som godkänner 
  ostrukturerad data:
xml9_1.xml
<?xml version="1.0" encoding="iso-8859-1" ?>  
<!DOCTYPE data [
  	<!ELEMENT data ANY>
  	<!ELEMENT extra (#PCDATA)>
]>
<data>
  	Här får jag skriva lite vad jag vill. 
  	Med <extra>taggar</extra> och vad jag vill...
  	Detta eftersom jag sagt att allt (ANY)  duger. 
</data>
 Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
OBS. Jag använder ibland interna DTD för att förenkla 
  dokumentationen. Helst skall man dock ha en extern DTD eftersom detta gör 
  det lätta att validera flera filer.
MIXED MODE XML
Man kan även skapa s.k. Mixed Mode XML. Detta betyder att man tillåter 
  "fri text" men eventella taggar i texten måste begränsas. 
  I nedanstående innehåller <data> fri text men om vi skall 
  sätta in några xml tags så måste dessa vara antingen 
  <firstname> eller <lastname>. Den sista <data> noden kommer 
  att förorsaka valideringsproblem eftersom vi inte sagt att data 
  noder kan innehålla extra noder. firstname och lastname 
  är däremot ok.
  
xml9_2.xml
<?xml version="1.0" encoding="iso-8859-1" ?>  
<!DOCTYPE person [
  	<!ELEMENT person (data*)>
  	<!ELEMENT data (#PCDATA|lastname|firstname)*>
  	<!ELEMENT lastname (#PCDATA)>
  	<!ELEMENT firstname (#PCDATA)>
  	<!ELEMENT extra (#PCDATA)>
]>
<person>
  	<data>
    		Hans förnamn är <firstname>Kalle</firstname> och efternamnet är
    		<lastname>Anka</lastname>
  	</data>
  	<data>
    		Jag vet bara hans efternamn, som är <lastname>Persson</lastname>
  	</data>
  	<data>
    		Vet inte alls vad han heter
  	</data>
  	<data>
    		Denna rad <extra>innehåller</extra> fel.
  	</data>
</person>
 Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Detta fungerar så att vi säger att data taggen kan innehålla 
  antingen PCDATA (tolkad text), firstname eller lastname. Observera att man även 
  får använda både firstname och lastname.
Denna metod kan vid första anblicken bryta mot hela XML:s grundidé, 
  men om vi ser den synvinkeln att såväl en människa som en dator 
  skall kunna läsa texten så kan det vara en god idé. Ur XML:s 
  synvinkel är det endast de två namntagsen som är av betydelse, 
  och dessa är lätta att plocka ut ur sammanhanget.
Vi kan gärna jämföra med webben och sökningar på 
  webben. Tag en titt på nedanstående mixed mode XML fil, tag sedan 
  en funderare över hur lyckade dina sökningar på webben brukar 
  vara. Om vi strukturerar det som behövs och skippar resten, kommer vi ändå 
  att få en bättre struktur än på webben.
 
  
xml9_3.xml
<?xml version="1.0" encoding="iso-8859-1" ?>  
<!DOCTYPE cars [
  	<!ELEMENT cars (data*)>
  	<!ELEMENT data (#PCDATA|make|model|year|contact)*>
  	<!ATTLIST data type (sale|buy) #REQUIRED>
  	<!ELEMENT make (#PCDATA)>
  	<!ELEMENT model (#PCDATA)>
  	<!ELEMENT year (#PCDATA)>
  	<!ATTLIST year what (estimate|exact) #IMPLIED>
  	<!ELEMENT contact (#PCDATA)>
]>
<cars>
  	<data type="sale">
    		Jag vill sälja min gamla <make>Lada</make> 
    		<model>Samara</model> som är inregistrerad 
    		ungefär år <year what="estimate">1999</year>
    		Tag kontakt med <contact>Pelle Ek, tfn. 12345</contact>
  	</data>
  	<data type="sale">
    		<contact>Eva Petterson</contact> säljer sin 
    		<make>Volvo</make> som
    		totalt obehövlig och oanvändbar
  	</data>
  	<data type="buy">
    		<contact>Kalle Ek</contact> 
    		vill köpa en bil av årsmodell 
    		<year what="exact">2000</year>
    		Helst en <make>Nissan</make> <model>Primera</model>
  	</data>
</cars>
 Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
EMPTY
Man kan även säga att ett element måste vara tomt. I nedanstående 
  exempel måste father vara tomt och den senare data noden kommer 
  att förorsaka valideringsfel
  
xml9_4.xml
<?xml version="1.0" encoding="iso-8859-1" ?>  
<!DOCTYPE persons [
  	<!ELEMENT persons (data*)>
  	<!ELEMENT data (name,father)*>
  	<!ELEMENT name (#PCDATA)>
  	<!ELEMENT father EMPTY>
]>
<persons>
  	<data>
    		<name>Kalle</name>
    		<father />
  	</data>
  	<data>
    		<name>Ville</name>
    		<father>Detta är fel</father>
  	</data>
</persons>
 Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Dett verkar ju rätt meningslöst vid första anblicken men om 
  du är van med html kodning kan du se nedanstående exempel, som (förhoppningsvis) 
  verkar vettigare:
  
xml9_5.xml
<?xml version="1.0" encoding="iso-8859-1" ?>  
<!--  förenklad html-liknande DTD -->
<!DOCTYPE persons [
  	<!ELEMENT persons (data*)>
  	<!ELEMENT data (name,img)*>
  	<!ELEMENT name (#PCDATA)>
  	<!ELEMENT img EMPTY>
  	<!ATTLIST img 	src CDATA #REQUIRED
      			width CDATA #IMPLIED
      			height CDATA #IMPLIED>
]>
<persons>
  	<data>
    		<name>Kalle</name>
    		<img src="kallebild.gif" />
  	</data>
  	<data>
    		<name>Ville</name>
    		<img src="villebild.gif" width="200" height="200" />
  	</data>
  	<data>
    		<name>Anna</name>
    		<img src="annabild.gif">Vad gör detta här?</img>
  	</data>
</persons>
 Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Här säger vi att vi skall ha en img tag men den måste 
  vara tom. Däremot kan vi ha några attribut. Jämför med 
  de bilder du - kanske - satt in på websidor. Brukar img taggen innehålla 
  data? Svar: Nej.