ENTITY
Entities är ett enkelst sätt att få in standardvärden
i xml filen. Vi kan skapa egna nya entities vid behov. Nedan är en DTD
som deklarerar en entity med namnet intro, samt en xml fil som använder
denna entity.
howto.dtd
<?xml version="1.0" encoding="iso-8859-1"?>
<!ENTITY intro "Dessa sidor lyder under copyleft reglerna.
Gör vad du vill med dem, så länge som du inte anklagar mig för någonting.">
<!ELEMENT data (title, instructions)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT instructions (howto+)>
<!ELEMENT howto (#PCDATA)>
xml10_2.xml
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE data SYSTEM "howto.dtd">
<data>
<title>&intro;</title>
<instructions>
<howto>För att byta rad i html skriver du <![CDATA[<br>]]></howto>
<howto>Sidan avslutas med <![CDATA[</html>]]></howto>
</instructions>
</data>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Det finns, till skillnad mot HTML, bara några få fördefinierade
entities i XML. Lägg bland annat märke till frånvaron av
som finns i HTML (Nej, jag har inte gjort ett stavfel i raden för &).
| Tecken |
Entity |
| & |
& eller && |
| ' |
' eller ' |
| > |
> eller > |
| < |
< eller &< |
| " |
" eller " |
xml10_1.xml
<?xml version="1.0"?>
<!DOCTYPE products SYSTEM "dtdfil.dtd">
<products>
<product>
<code>ABC & D</code>
<price> >122</price>
<amount> <4</amount>
</product>
</products>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Den något konstiga skrivningen av & har sin förklaring när
man ser på hur XML tolken hanterar entities. Nedan är ett litet exempel
på en entity:
<!ENTITY vi "Anders & Eva">
Denna används i en XML fil på följande sett:
<vem>&vi;</vem>
XML processorn kommer då att expandera texten så att den blir till
<vem>Anders & Eva</vem>
och kommer att försöka lista ut vad entiteten "& Eva"
är för något. Den kommer att misslyckas med detta...
Denna tvåstegsprocess kommer sig av att man kan göra följande
(jag har satt in DTD:n i XML filen för enkelhets skull):
xml10_3.xml
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE data [
<!ENTITY intro "Dessa sidor lyder under copyleft reglerna.
Gör vad du vill med dem, så länge som du inte anklagar mig
för någonting.">
<!ENTITY tit "<title>&intro;</title>">
<!ELEMENT data (title, instructions)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT instructions (howto+)>
<!ELEMENT howto (#PCDATA)>
]>
<data>
&tit;
<instructions>
<howto>För att byta rad i html skriver du <![CDATA[<br>]]></howto>
<howto>Sidan avslutas med <![CDATA[</html>]]></howto>
</instructions>
</data>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken
Observera användningen av &tit; entityn i ovanstående.