Wat betekent dtd-documenttypedefinitie? XML-taal - Documenttypedefinities (DTD). Een attribuut met een waarde declareren

Documentschemabeschrijving

Een DTD beschrijft de documentlay-out voor een bepaalde opmaaktaal door middel van een reeks declaraties (parameterobjecten, elementen en attributen) die de klasse (of het type) ervan beschrijven in termen van de syntactische beperkingen van dat document. Een DTD kan ook constructies declareren die altijd nodig zijn om de structuur van een document te definiëren, maar die echter de interpretatie van bepaalde documenten kunnen beïnvloeden.

Parameterobjecten declareren

Een parameterobjectdeclaratie definieert een macro van een bepaald type waarnaar ergens in de DTD kan worden verwezen en uitgebreid. Deze macro's verschijnen mogelijk niet in het document zelf, maar alleen in de DTD. Als naar een parameterobject wordt verwezen met de DTD-naam, wordt het uitgebreid tot een tekenreeks die de inhoud van dat object specificeert.

Het parameterobject fontstyle bevat een groep tags TT | ik | B | GROOT | KLEIN.

"#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

Het inline parameterobject bevat tekstgegevens en nog vier parameterobjecten fontstyle, Phrase, Special en Formctrl.

Verklaring van elementen

Elementdeclaraties bieden een lijst met toegestane elementnamen in een document, en specificeren ook informatie over tags (of deze vereist zijn) en het inhoudsmodel voor elk element.

Verscheidene trefwoorden en de karakters definiëren de inhoud van het element:

  • LEEG - lege inhoud
  • ELKE - elke inhoud
  • , - geeft de volgorde aan
  • | - scheiding van alternatieven
  • () - groeperen
  • * - een willekeurig aantal elementen (nul of meer)
  • + - door ten minsteéén element (een of meer)
  • ? - optionele aanwezigheid van een element (nul of één)
  • Zo niet *, + of ? - er mag slechts één element zijn

(DT|DD) +>

Een DL-element moet in willekeurige volgorde een of meer DT- of DD-elementen bevatten.

(%blok;|SCRIPT) + -(FORM) >

Een FORM-element moet een of meer elementen met een blokparameterobject of SCRIPT-elementen in willekeurige volgorde bevatten, maar het is niet mogelijk een ander FORM-element te bevatten.

Kenmerken definiëren

Aan elk element in een DTD-document kan een lijst met attributen zijn gekoppeld. Gebruik hiervoor de!ATTLIST-richtlijn, die de naam specificeert van het element waaraan de lijst met attributen kan worden toegewezen, en de parameters van elk attribuut: de naam, het type en de standaardeigenschappen.

Bijvoorbeeld:

naam CDATA #VEREIST>

In dit voorbeeld wordt een naamattribuut voor het MAP-element gedefinieerd. Het is verplicht.

Er zijn dit soort attributen:

  • CDATA (tekenset met gegevens) - de attribuutwaarde kan elk tekengegeven zijn
  • ID - de attribuutwaarde moet een unieke identificatie van het element zijn
  • IDREF - de waarde van het element is een verwijzing naar het element via zijn ID
  • IDREFS - hetzelfde als IDREF, maar met de mogelijkheid om niet door één identificatie te koppelen, maar door meerdere
  • NMTOKEN - de attribuutwaarde kan een reeks tekens zijn, enigszins vergelijkbaar met een naam (vandaar de naam - naamtoken). Dit is een tekenreeks die elke combinatie bevat van de tekens die zijn toegestaan ​​voor XML-namen.
  • NMTOKENS - de attribuutwaarde is lijst met waarden
  • ENTITY - de waarde wordt gebruikt om naar een externe entiteit te verwijzen.
  • ENTITEITEN - hiermee kunt u een lijst met externe entiteiten opgeven, gescheiden door spaties.
  • NOTATIE - de attribuutwaarde kan een van de eerder gedefinieerde notaties zijn
  • NOTATIES - hiermee kunt u een lijst met notaties opgeven.
  • Lijsten en NOTATION-lijsten
  • ENUMERATIE - specificeert een lijst met mogelijke waardealternatieven.

Er zijn de volgende standaardeigenschappen:

  1. IMPLICIET - de attribuutwaarde hoeft niet te worden gespecificeerd;
  2. VEREIST - de attribuutwaarde moet worden opgegeven;
  3. OPGELOST - de waarde van dit attribuut is gespecificeerd als een constante in de DTD en kan niet worden gewijzigd in het document;
  4. een specifieke waarde die standaard wordt gebruikt.

Associatie van een document met een specifieke DTD

Om een ​​document aan een specifieke DTD te koppelen, moet u het Document Type Declaration-element aan het begin van de documenttekst opgeven.

Afhankelijk van de locatie van de DTD kan de Document Type Declaration uit twee typen bestaan:

  • Interne DTD-subset

Een reeks DTD-declaraties bevindt zich in de hoofdtekst van het document zelf. Bijvoorbeeld:

]> ]>

  • Externe DTD-subset

Een set DTD-aangiften bevindt zich in een apart tekstbestand met de extensie .dtd In dit geval kan een link naar het bestand worden gemaakt via een publieke identificatie en (of) via een systeemidentificatie. Bijvoorbeeld:

"http://www.w3.org/TR/html4/strict.dtd">

Voorbeeld

Het voorbeeld is zeer eenvoudige XML DTD beschrijft een lijst met mensen:

(persoon*) > (naam, geboortedatum?, geslacht?, BSN?) > (#PCDATA) > (#PCDATA) > (#PCDATA) >

Beginnend vanaf de eerste regel:

  1. Element Bevat een willekeurig aantal elementen Teken<*>betekent dat 0, 1 of meer elementen mogelijk zijn Binnen een element .
  2. Element Bevat elementen , , En . Tekenbetekent dat het element optioneel is. Element bevat niet, wat betekent dat het element moeten element bevatten .
  3. Element bevat gegevens.
  4. Element bevat gegevens.
  5. Element bevat gegevens.
  6. Element bevat gegevens.

Een voorbeeld van een XML-document dat deze DTD gebruikt:

> > > Fred Bloggers > > 27/11/2008> > Mannelijk > > 1234567890> > >

Zie ook


Wikimedia Stichting.

2010.

    Kijk wat "DTD" is in andere woordenboeken: DTD

    Kijk wat "DTD" is in andere woordenboeken:- , sterven in een ASCII Datei (ASCII) abgelegte Beschreibung der Struktur von Dokumenten, welche all vom selben Typ sind. Een DTD wordt uitgevoerd na de internationale regeling… … Universal-Lexikon

    Kijk wat "DTD" is in andere woordenboeken:- kan staan ​​voor: Inhoud 1 Media 2 Muziek 3 Sport 4 Technologieën 4.1 Computers ... Wikipedia

    - steht für: Inhaltsverzeichnis 1 Medien 2 Muziek 3 Technologien 3.1 Computer 3.1.1 Spiele … Deutsch Wikipedia Dtd

    Kijk wat "DTD" is in andere woordenboeken:- steht für: Darwin Digital Television, een australische Fernsehstation Delta Tau Delta, een Amerikaanse Amerikaanse Studentenorganisatie Document Type Definition, zie Dokumenttypdefinition … Deutsch Wikipedia

    Kijk wat "DTD" is in andere woordenboeken:- (dē tē dēʹ) zn. Een set regels voor het markeren van een document in SGML. * * * … Universalium- (documenttypedefinitie) specificatie geschreven in de Standard Generalized Markup Taal en

met informatie over het formaat van een bepaald document (computers) ...

Engels hedendaags woordenboek

20. Talen voor het beschrijven van XML-schema's

    DTD-schema's. Nadelen van DTD-schema's. XDR-circuits. Elementen en attributen van XDR-schema's.

    Het idee om je eigen tags te maken die een speciale betekenis hebben en de inhoud van een document helpen beschrijven, is op zichzelf gewoonweg prachtig. Maar als elke gebruiker zijn eigen beschrijvingen kan maken, hoe kunnen deze dan worden herkend? Daartoe gebruikt de XML-specificatie schema's om dergelijke "zelfgemaakte" tags te beschrijven. Ze zijn nodig om:

beschrijf wat de markup precies is;

    beschrijf precies wat de opmaak betekent.

    De meest bekende schemabeschrijvingstalen zijn de volgende:

    DTD (Document Type Definition) is een documenttypedefinitietaal die oorspronkelijk werd gebruikt als taal voor het beschrijven van de structuur van een SGML-document.

XDR (XML Data Reduced) is een XML-schemadialect ontwikkeld door Microsoft en ondersteund in Internet Explorer versies 4 en 5.

XML Schema of kortweg XSD (XML Schema Definition Language) is een aanbeveling van het W3C sinds 2001.

Een DTD-schema biedt een sjabloon voor documentopmaak die de aanwezigheid, volgorde en rangschikking van elementen en hun attributen in een XML-document specificeert.

In termen van een DTD kan het inhoudsmodel van een XML-document als volgt worden beschreven:

Elk documentelement kan een van de volgende typen hebben:

Syntaxis

Opmerking

Bevat alleen tekstgegevens

Andere elementen

Bevat alleen onderliggende elementen

Gemengd

Bevat een combinatie van tekstgegevens en onderliggende elementen

Bevat niets

Attributen gevonden in documenttags worden afzonderlijk beschreven met behulp van de syntaxis:

element_name attribuutnaam1 (type) standaardwaarde

…………………………………………………………………………………...

elementnaam attribuutnaamN (type) standaardwaarde >

In dit geval kan een attribuut in een DTD een van de volgende drie typen hebben:

  • Gelabeld attribuut

    Attribuut met opsomming

Naast het attribuuttype kunt u ook de modaliteit ervan instellen:

Beschouw als voorbeeld de beschrijving van attributen van een stringtype voor een element dat een bericht beschrijft:

nummer CDATA #VEREIST

datum CDATA #VEREIST

van CDATA #FIXED

status CDATA #IMPLICIET>

Als dit element opgesomde attributen bevat, zou hun beschrijving er bijvoorbeeld als volgt uit kunnen zien:

nummer ID #VEREIST

van CDATA #VEREIST

alert (laag | normaal | dringend) "normaal">

Attributen van gelabelde elementen kunnen van vier typen zijn:

Ten slotte kunnen in de DTD de volgende indicatoren voor het optreden van sequenties worden gebruikt:

Symbool

Voorbeeld

Beschrijving

Opeenvolgend gebruik van lijstelementen

Eén van de lijstleden wordt gebruikt

Er wordt slechts één element gebruikt

Optioneel gebruik (0 of 1 keer)

Eén of meerdere keren gebruikt

Nul of vaker gebruikt

Als voorbeeld is hier een DTD-diagram dat de structuur van een elektronische mailbox beschrijft:

Het XML-brondocument dat aan dit schema voldoet, zou er bijvoorbeeld zo uit kunnen zien:

[e-mailadres beveiligd]

[e-mailadres beveiligd]

Met betrekking tot:

[e-mailadres beveiligd]

[e-mailadres beveiligd]

Herinneren

[e-mailadres beveiligd]

Herinner me aan de ontmoeting.

Let op de 2e regel van het document, die aangeeft externe link naar een bestand dat een DTD-schema bevat.

Kortom, een DTD biedt twee manieren om in een XML-document te worden gebruikt.

Interne schemadeclaratie:

Een extern schema declareren:

Concluderend wijzen we op de volgende nadelen van DTD-schema's:

    Het zijn geen XML-instanties. Het vereist het leren van een compleet andere taal.

    Ze bieden geen controle over gegevenstypen, behalve voor zeer eenvoudige tekstgegevens.

    Het zijn geen XML-instanties, dus ze kunnen niet eenvoudig worden uitgebreid of geconverteerd naar andere opmaaktalen zoals HTML of DHTML.

    Biedt geen ondersteuning voor XML-naamruimten.

XDR-circuit

XML-gegevens volledige naam De schemabeschrijvingstaal van Microsoft en XML-DataReduced zijn "deel" van de volledige aanbeveling. Een XDR-schema is een exemplaar van XML, d.w.z. Voldoet aan alle syntaxisregels en XML-standaarden.

Door gegevenscontroles op documentniveau te implementeren met behulp van een schema, kunnen applicaties die transacties genereren en ontvangen worden geoptimaliseerd voor maximale prestaties. Veldmatching en recordgeldigheid worden gecontroleerd op XML-instantieniveau.

Het rootelement in een XDR-schema is altijd het Schema-element:

naam = "schemanaam" xmlns = "urn:schemas-microsoft-com:xml-data"

xmlns:dt="urn:schemas-microsoft-com:datatypes">

<-- Объявления других элементов -->

Het ElementType-element heeft de syntaxis:

content="(leeg | texOnly | eltOnly | gemengd)">

dt:type "gegevenstype"

model="(open | gesloten)"

order="(één | seq | veel)"

Een ElementType-element kan de volgende kenmerken hebben:

Kenmerknaam

Beschrijving

Elementnaam

Gegevenstype artikel

Kan waarden aannemen:

Openen - toegestaan gebruik elementen die niet in het schema zijn gedefinieerd

Gesloten – het is verboden elementen te gebruiken die niet in het schema zijn gedefinieerd

De volgorde van onderliggende elementen in een XML-instantie. Geldige waarden:

één – er wordt aangenomen dat er één document bestaat

veel – een willekeurig aantal elementen in willekeurige volgorde

seq – elementen worden gespecificeerd in een strikt gespecificeerde volgorde.

Het volgende kan worden gebruikt als onderliggende elementen voor ElementType:

Elementnaam

Beschrijving

Declareert een onderliggend element

Biedt een beschrijving van het ElementType

Biedt het gegevenstype ElementType van het element

Definieert de volgorde van elementen

Definieert een attribuut

Definieert informatie over kind-element Kenmerktype

De syntaxis die wordt gebruikt om attributen te declareren is:

default = "standaardwaarde"

dt:type="primitief-type"

dt:values="genummerde waarden"

vereist="(ja|nee)"

Het AttributeType-element kan op zijn beurt de volgende attributen hebben:

Betekenis

Beschrijving

Standaardwaarde

Eén van de volgende typen:

entiteit, entiteiten, opsomming, id, idref, nmtoken, nmtokens, notatie, string

Geldige waarden

Kenmerknaam

Geeft aan dat een attribuut aanwezig moet zijn in de beschrijving

De syntaxis voor het beschrijven van het attribuutelement is als volgt:

default = "standaardwaarde"

type="attribuuttype"

en de mogelijke waarden kunnen zijn:

Betekenis

Annotatie: In dit gedeelte worden de algemene principes van schrijven beschreven. Het type document bepalen. Ook worden de belangrijkste nadelen en kenmerken van DTD besproken.

Waarom heb je een DTD nodig?

Bij het maken van een XML-document beslist de ontwikkelaar zelf: hoe hij de tags een naam geeft, in welke volgorde ze zullen verschijnen, welke gegevens in een bepaald element zullen worden geschreven, of het element attributen zal hebben of niet, en nog veel meer. Zonder een formele beschrijving van de documentstructuur kan alleen de ontwikkelaar dit document gebruiken. Als het ontwikkelde XML-document bedoeld is voor verzending naar de buitenwereld, bijvoorbeeld naar zakenpartners, en als u ook van plan bent om als reactie hierop documenten te ontvangen die in hetzelfde formaat zijn geschreven, kunt u niet zonder documenttypedefinitie (DTD). Dit komt door het feit dat, om beide partijen de ontvangen informatie te laten begrijpen, de elementen en attributen in de documenten door alle partijen op dezelfde manier moeten worden gebruikt. Documenttypedefinities zorgen voor nauwkeurigheid en precisie in de regels voor het schrijven van goed opgemaakte documenten. XML-documenten. Documenttypedefinities worden aan het begin van een XML-bestand of extern als *.DTD-bestand opgeslagen en beschrijven de informatiestructuur van een document. De DTD somt mogelijke elementnamen op, definieert de beschikbare attributen voor elk elementtype en beschrijft het nesten van elementen.

XML wordt gebruikt als middel om de grammatica van andere talen te beschrijven. En dus zullen we bij het ontwikkelen van een taal voor het schrijven van XML-documenten op een bepaald gebied een woordenboek voor dit werkgebied moeten ontwikkelen. DTD's bevatten per definitie alle informatie die in een XML-document kan voorkomen. Alles wat bij het project hoort, moet in de DTD worden opgenomen. De beschrijving DTD is dus in wezen zo'n woordenboek. De moderne wereld verandert behoorlijk dynamisch, dus het is niet van tevoren bekend welke informatie in de toekomst nodig kan zijn, en om te voorkomen dat de structuur van documenten vaak moet worden gewijzigd, bevat een doorgaans ontwikkeld woordenboek alles wat nodig kan zijn voor specifieke informatie. soorten bedrijven of bedrijfstakken. Hierdoor kunnen DTD-definities worden gebruikt als analyse- en ontwerptool. XML-applicaties communiceren met elkaar op basis van de vocabulaires die ze begrijpen, dus het definiëren van een DTD helpt begrijpen wat de applicatie kan beschrijven.

Een ander gebruik van DTD is het controleren van de juistheid van een geschreven XML-document. Goed opgemaakte documenten, geschreven volgens alle regels beschreven in de XML-specificatie, kunnen niet op fouten worden gecontroleerd. Gemiste fouten kunnen schade veroorzaken aan het programma dat deze documenten verwerkt, of het invoeren van onjuiste gegevens in het systeem. Maar als het document verwijst naar een DTD-definitie, kunnen we met behulp van een validatieparser controleren of er fouten in ons document zitten. De parser vraagt ​​de DTD op en zorgt ervoor dat het document de daarin beschreven grammaticale regels volgt. De analyser detecteert structurele en inhoudelijke fouten, waardoor het aantal controles door de applicatielogica aanzienlijk wordt verminderd.

DTD-definities schrijven: algemene principes.

Een DTD koppelen aan een XML-document

XML 1.0 biedt een speciale DOCTYPE-declaratie om een ​​DTD-declaratie aan een documentinstantie te koppelen. Het moet de XML-declaratie volgen en voorafgaan aan eventuele documentelementen. Er kunnen echter opmerkingen en verwerkingsopdrachten voorkomen tussen de XML- en DOCTYPE-declaraties.

Een DOCTYPE-declaratie bevat het trefwoord DOCTYPE, gevolgd door de naam van het hoofdelement van het document, en vervolgens een inhoudsdeclaratieconstructie. Voordat u deze verklaring uitlegt, moet u eerst een voorbeeld bekijken van de locatie van een DOCTYPE-declaratie in een documentinstantie. Hieronder staan ​​de eerste drie regels van het XML-document:

..

Het is mogelijk om een ​​externe subset van declaraties in te schrijven apart bestand DTD, neem de interne subset op in de hoofdtekst van de DOCTYPE-declaratie, of doe beide. In het laatste geval (door interne en externe DTD's te combineren) kunnen nieuwe declaraties worden gespecificeerd in de interne DTD's of kunnen de declaraties in de externe worden herschreven (volgens de definitie van de XML-specificatie lezen parsers eerst de interne subset, en dus de declaraties die daar zijn opgenomen, hebben voorrang).

XML-declaraties kunnen een zelfstandig attribuut bevatten, dat alleen de waarden "ja" en "nee" accepteert. Als de attribuutwaarde ja is, hebben declaraties buiten de documentinstantie geen invloed op de informatie die door het document wordt overgebracht naar de toepassing die er gebruik van maakt. De waarde nee geeft aan dat er externe declaraties zijn met waarden die nodig zijn om de inhoud van het document goed te beschrijven, bijvoorbeeld specifieke standaardwaarden. In de praktijk wordt het optionele standalone attribuut zelden gebruikt. Het instellen van dit attribuut op ja garandeert niet de afwezigheid van externe afhankelijkheden van welk type dan ook. Het is alleen zo dat externe afhankelijkheden in dit geval niet tot een fout in het document zullen leiden als ze niet bij de verwerking worden betrokken. Dus eigenlijk is dit attribuut een teken voor parsers en andere applicaties die aangeven of ze externe inhoud moeten gebruiken.

Het interne declaratieblok van de opmaak van de DOCTYPE-tag bestaat uit een vierkante haak links, een lijst met declaraties en een vierkante haak rechts:

Interne DTD's zijn erg handig; ze zijn altijd opgenomen in het document dat ze gebruikt en kunnen daarom gemakkelijk door de parser worden opgehaald. Interne DTD's vergroten de documentgrootte echter aanzienlijk. In de praktijk worden interne DTD's meestal gelijktijdig met externe gebruikt om nieuwe aangiften toe te voegen. Als daar een object wordt gedeclareerd dat ook in de buitenste DTD is gedeclareerd, heeft de binnenste voorrang. Hierdoor kunt u de aangiften afstemmen op de behoeften van specifieke documenten.

Externe DTD's zijn in sommige opzichten flexibeler. IN in dit geval een DOCTYPE-declaratie bestaat uit een regulier trefwoord en de naam van het rootelement, gevolgd door een ander SYSTEM of PUBLIC trefwoord dat de bron van de externe DTD-definitie aangeeft, gevolgd door de lokalisatie van die definitie. Als het trefwoord SYSTEM is, moet de DTD zich direct en expliciet op de opgegeven URL bevinden.

Als externe DTD's heel vaak worden herschreven, beginnen ze hun betekenis te verliezen, wat een teken is van een slecht aanvankelijk ontwerp.

Het trefwoord PUBLIC is bedoeld voor bekende woordenboeken. Een toepassing die een document uit dit woordenboek parseert, moet een strategie gebruiken om de juiste DTD te vinden.

De XML 1.0-standaard staat toe dat een PUBLIC-declaratie zowel een publieke URI als een systeem-ID heeft. Als een applicatie of parser die een document uitvoert geen DTD kan vinden van een URI met het PUBLIC trefwoord, moet deze de systeem-ID gebruiken.

Basisopmaakdeclaraties

De toegestane inhoud in een XML-document wordt bepaald door vier soorten opmaakdeclaraties in de DTD. De volgende tabel toont de trefwoorden die bij deze verklaringen horen en hun betekenis:

De eerste twee typen hebben betrekking op de informatie die we verwachten aan te treffen in een XML-document: elementen en attributen.

De laatste twee typen worden gebruikt ter ondersteuning. XML-entiteiten maken het leven van de ontwikkelaar van een woordenboek bijzonder gemakkelijk. Meestal bestaan ​​ze uit inhoud die zo vaak wordt gebruikt in de DTD of het document dat dit de aanmaak van een speciale verklaring rechtvaardigt. Het gebruik van deze declaratie doet denken aan de include-instructie in de C/C++-talen, waarbij een naam wordt gebruikt ter vervanging van de inhoud.

Notaties beschrijven inhoud die niet in XML is geschreven. Ze worden gebruikt om een ​​specifieke gegevensklasse te declareren en deze aan een extern programma te koppelen. Dit externe programma wordt een handler voor de gedeclareerde gegevensklasse. Nadat de ontwikkelaar bijvoorbeeld een JPEG-afbeelding aan een document heeft gekoppeld, wil hij dat het programma binaire gegevens in dat formaat accepteert en weergeeft. In dit geval hangt het document uiteraard af van het soort afhandelaar dat beschikbaar is op het systeem dat het document ontvangt. In het belang van de portabiliteit bieden sommige auteurs geen links naar handlers. In dit geval wordt de notatie eenvoudigweg een typemechanisme.

In XML-documenten definieert een DTD een reeks geldige elementen, identificeert elementen die zich in andere elementen kunnen bevinden, en definieert geldige attributen voor elk ervan. De syntaxis van DTD's is zeer uniek en vereist extra inspanning van de auteur-ontwikkelaar bij het maken van dergelijke documenten (de complexiteit van DTD's is een van de redenen dat het gebruik van SGML, waarbij voor elk document een DTD moet worden gedefinieerd, niet zo wijdverbreid is geworden zoals bijvoorbeeld HTML). Zoals opgemerkt is het niet nodig om DTD's in XML te gebruiken - documenten die zonder deze regels zijn gemaakt, zullen correct door de parser worden verwerkt als ze voldoen aan de basisvereisten van de XML-syntaxis. De controle over de soorten elementen en de juistheid van de relaties daartussen ligt in dit geval echter volledig bij de auteur van het document. Totdat de grammatica van onze nieuwe taal is beschreven, zullen alleen wij deze kunnen gebruiken, en hiervoor zullen we gedwongen zijn speciaal ontwikkelde software te gebruiken, en geen universele parserprogramma's.

De DTD voor XML gebruikt de volgende soorten regels: regels voor elementen en hun attributen, beschrijvingen van categorieën (macrodefinities), beschrijvingen van binaire gegevensformaten. Ze beschrijven allemaal de basisconstructies van de taal: elementen, attributen, symbolische constanten, externe binaire gegevensbestanden.

Om een ​​DTD in ons document te gebruiken, kunnen we deze ofwel in een extern bestand beschrijven en bij het beschrijven van de DTD eenvoudigweg een link naar dit bestand aangeven, of direct in het document zelf een gebied selecteren waarin we de noodzakelijke regels. In het eerste geval specificeert het document de naam van het bestand dat DTD-beschrijvingen bevat:

...

In het document zijn DTD-aangiften als volgt opgenomen:

... ... ]> ...

In het geval dat interne en externe beschrijvingen tegelijkertijd worden gebruikt, zal het analyseprogramma eerst rekening houden met de interne, d.w.z. hun prioriteit is hoger. Bij het valideren van een document zoekt de XML-processor eerst naar de DTD binnen het document. Als de regels in het document niet zijn gedefinieerd en het attribuut niet is ingesteld zelfstandig = "ja", dan laadt het programma het opgegeven externe bestand en worden de daarin opgenomen regels van daaruit gelezen. Als het attribuut zelfstandig zaken "Ja", dan is het gebruik van externe DTD-beschrijvingen verboden.

Elementdefinitie

Een element in een DTD wordt gedefinieerd met behulp van een handle! ELEMENT, dat de naam van het element en de structuur van de inhoud ervan specificeert.

Bijvoorbeeld voor een element de volgende regel kan worden gedefinieerd:

Het trefwoord ELEMENT geeft aan dat deze instructie een XML-element beschrijft. In deze instructie worden de naam van het element (bloem) en het type inhoud gespecificeerd.

Bij de definitie van een element specificeren we eerst de naam van het element (bloem) en vervolgens het inhoudsmodel ervan. We bepalen welke andere elementen of gegevenstypen daarin kunnen voorkomen. In dit geval wordt de inhoud van het bloemelement bepaald met behulp van een speciale PCDATA-markering (wat parseerbare karaktergegevens betekent - alle informatie waarmee het analyseprogramma kan werken). Er zijn nog twee instructies die het inhoudstype definiëren: EMPTY,ANY. De eerste geeft aan dat het element leeg moet zijn (bijvoorbeeld ), de tweede is dat de inhoud van het element niet specifiek wordt beschreven.

De reeks onderliggende objecten voor het huidige element wordt opgegeven als een door komma's gescheiden lijst met elementnamen. In dit geval, om het aantal herhalingen van insluitsels van deze elementen aan te geven, worden de symbolen +, *, ? :

Dit voorbeeld specificeert dat binnen een element de elementen titel, auteur en inhoudsopgave moeten worden gedefinieerd, waarbij het titelelement is verplicht onderdeel en kan slechts één keer voorkomen, het auteurelement kan meerdere keren voorkomen en het inhoudsopgave-element is optioneel, d.w.z. kan ontbreken. Als er meerdere mogelijke opties zijn voor de inhoud van een gedefinieerd element, moeten deze worden gescheiden met het symbool "|". :

De * in dit voorbeeld geeft aan dat de reeks interne elementen die wordt gedefinieerd meerdere keren kan worden herhaald of helemaal niet kan worden gebruikt.

Als de elementdefinitie "gemengde" inhoud specificeert, d.w.z. tekstgegevens of een reeks elementen, moet u eerst PCDATA opgeven en vervolgens scheiden door "|" lijst met elementen.

Voorbeeld van een geldig XML-document:

]> ...

Markslaan
12-12-12 46-23-62 [e-mailadres beveiligd]

Kenmerken definiëren

Elementattributenlijsten worden gedefinieerd met behulp van een trefwoord! ATTLIST. Daarin worden de namen van de attributen, de typen van hun waarden en aanvullende parameters gespecificeerd. Bijvoorbeeld voor een element

De volgende attributen kunnen worden gedefinieerd:

IN in dit voorbeeld voor element artikel Er zijn drie attributen gedefinieerd: Idd, over En type, die respectievelijk de typen ID (identifier), CDATA en een lijst met mogelijke waarden hebben. Er zijn in totaal zes mogelijke attribuutwaardetypen:

  • CDATA - documentinhoud kan elk tekengegeven zijn
  • ID - definieert de unieke identificatie van het element in het document
  • IDREF(IDREFS) - geeft aan dat de attribuutwaarde de naam (of meerdere van dergelijke namen, gescheiden door spaties in het tweede geval) moet zijn van de unieke identificatie van het element dat in dit document is gedefinieerd
  • ENTITY(ENTITIES) - de attribuutwaarde moet de naam zijn (of een lijst met namen als ENTITIES wordt gebruikt) van de component (macrodefinitie) die in het document is gedefinieerd
  • NMTOKEN (NMTOKENS) - de inhoud van het element kan slechts één enkel woord zijn (d.w.z. deze parameter is een beperkte variant van CDATA)
  • Lijst met geldige waarden - definieert een lijst met waarden die dit kenmerk kan hebben.

U kunt ook de volgende parameters gebruiken in een attribuutdefinitie:

  • #REQUIRED - definieert een vereist attribuut dat op alle elementen moet worden ingesteld van dit type
  • #IMPLIED - het attribuut is optioneel
  • #FIXED "waarde" - geeft aan dat het attribuut alleen mag hebben gespecificeerde waarde De attribuutdefinitie zelf is echter niet verplicht, maar tijdens het parseerproces wordt de waarde ervan in ieder geval doorgegeven aan het analyseprogramma
  • Waarde - stelt de standaardwaarde van het attribuut in

Componenten definiëren (macrodefinities)

Een entiteit vertegenwoordigt definities waarvan de inhoud in een document kan worden hergebruikt. In andere programmeertalen worden soortgelijke elementen macrodefinities genoemd. DTD-componenten worden gemaakt met behulp van de!ENTITY-instructie:

Het analyseprogramma, dat eerst naar de inhoud van het DTD-definitiegebied kijkt, zal deze instructie verwerken en, tijdens verdere parsering van het document, de inhoud van de DTD-component gebruiken op de plaats waar de naam ervan verschijnt. Die. Nu kunnen we in het document de uitdrukking gebruiken, die zal worden vervangen door de regel "We zijn blij u te mogen verwelkomen"

Over het algemeen kunnen binnen een DTD drie soorten macrodefinities worden gedefinieerd:

Interne macrodefinities- zijn ontworpen om een ​​stringconstante te definiëren. Met hun hulp kunt u koppelingen naar vaak gewijzigde informatie organiseren, waardoor het document leesbaarder wordt; Interne componenten worden in het document opgenomen met ampersand &

Er zijn vijf vooraf gedefinieerde interne tekenconstanten in XML:

  • < - символ "<"
  • > - symbool ">"
  • & - symbool "&"
  • " - apostrof-symbool """
  • " - dubbel aanhalingsteken """

Externe macrodefinities- wijs naar de inhoud van een extern bestand, en deze inhoud kan tekst of binaire gegevens zijn. In het eerste geval wordt de macro ingevoegd waar de macro wordt gebruikt tekstreeksen, in de tweede binaire gegevens waarmee de analysator geen rekening houdt en die door externe programma's worden gebruikt

Regelmacrodefinities- parametermacrodefinities kunnen alleen binnen het DTD-bereik worden gebruikt en worden aangegeven door het speciale symbool % dat vóór de macronaam is ingevoegd. In dit geval wordt de inhoud van de component direct in de tekst van de DTD-regel geplaatst

Bijvoorbeeld voor het volgende documentfragment:

U kunt een korter formulier gebruiken:

Macro's worden vaak gebruikt om parameters in attribuutregels te beschrijven. In dit geval wordt het mogelijk om dezelfde attribuutdefinities voor verschillende elementen te gebruiken:

Gegevens typen

Vaak moet de ontwikkelaar bij het maken van een XML-element bepalen welk type gegevens als inhoud kan worden gebruikt. Die. als we een element definiëren 10.10.98, dan willen we er zeker van zijn dat er in het document op deze plaats een string staat die een datum vertegenwoordigt, en niet een getal of een willekeurige reeks tekens. Met behulp van gegevenstypering kunt u elementen maken waarvan de waarden bijvoorbeeld als parameters in SQL-query's kunnen worden gebruikt. In dit geval moet het clientprogramma weten tot welk gegevenstype de huidige elementwaarde behoort en, als deze overeenkomt, een SQL-query genereren.

Als een verificatie-XML-processor als client-side programma wordt gebruikt, kan informatie over het type worden verzonden met behulp van een speciaal voor dit attribuut gemaakt element dat een geschikte DTD-definitie heeft. Tijdens het parseerproces geeft de parser de waarde van dit kenmerk door aan de clienttoepassing, die deze informatie zoals verwacht kan gebruiken. Om bijvoorbeeld op te geven dat de inhoud van een element een lang geheel getal moet zijn, kunt u de volgende DTD-definitie gebruiken:

Door het attribuut in te stellen op de standaardwaarde LONG en het te definiëren als FIXED, hebben we het clientprogramma in staat gesteld de benodigde informatie over het inhoudstype te verkrijgen van dit element, en nu kan het onafhankelijk bepalen of het inhoudstype overeenkomt met dat gespecificeerd in de DTD-definitie.

Hier is een voorbeeld van een XML-document dat verschillende elementen met verschillende gegevenstypen definieert en gebruikt:

... 5 2 32.5 WAAR 18346 34 wrijven. 28k. ...

Zoals uit het voorbeeld blijkt, is het mechanisme voor het maken van documentelementen helemaal niet veranderd. Alle informatie die nodig is om gegevenstypen te controleren, is opgenomen in de elementdefinities in het DTD-blok.

Concluderend zou ik willen opmerken dat DTD ons een zeer handig mechanisme biedt om de inhoud van een document te controleren. Tegenwoordig gebruiken bijna alle programma's voor het bekijken van internetdocumenten DTD-regels. Dit is echter lang niet de enige manier om de juistheid van een document te controleren. IN huidige moment in W3-consortium wordt overwogen nieuwe standaard taal voor het beschrijven van de structuur van documenten, genaamd dataschema's. Het volgende deel is gewijd aan het werken met hen.

Een DTD is een set syntaxisregels waaraan de structuur van een XML-document wordt geverifieerd. Een DTD definieert expliciet de structuur van een XML-document, specificeert elementen en hun attributen, en biedt andere informatie die van toepassing is op alle XML-documenten die uit de DTD worden gegenereerd.

Houd er rekening mee dat de aanwezigheid van een DTD niet verplicht is. Als er een DTD bestaat, gebruikt het XML-systeem deze om het XML-document te interpreteren. Als er geen DTD is, wordt van het XML-systeem verwacht dat het het document volgens zijn eigen regels interpreteert. Het wordt echter nog steeds aanbevolen om een ​​DTD voor XML-documenten te maken, omdat dit de interpretatie en controle van de structuur vergemakkelijkt.

De DTD kan rechtstreeks in het XML-document worden opgenomen, waarnaar wordt verwezen via een URL, of een combinatie van beide. Wanneer u een DTD rechtstreeks in een XML-document opneemt, verschijnt de DTD-definitie onmiddellijk na de proloog:

Het attribuut root_element_name komt overeen met de naam van het rootelement in de tags die het volledige XML-document bevatten. De sectie "andere declaraties" bevat definities van elementen, attributen, enz.

Mogelijk geeft u er de voorkeur aan om de DTD in een apart bestand te plaatsen om een ​​modulaire programmastructuur te behouden. Laten we eens kijken hoe een link naar een externe DTD eruit ziet in een XML-document. Het probleem kan worden opgelost met één eenvoudig commando:

Net als bij de interne DTD-declaratie moet de root_element_name overeenkomen met de naam van het rootelement in de tags die het volledige XML-document bevatten. Het SYSTEM attribuut geeft aan dat some_dtd.dtd zich bevindt lokale server. Er kan echter ook naar het bestand some_dtd.dtd worden verwezen via de absolute URL. Ten slotte wordt de URL van de externe DTD, die zich op een lokale of externe server bevindt, tussen aanhalingstekens vermeld.

Dus hoe maak je een DTD voor Listing 14.1? Eerst gaan we een verwijzing naar de externe DTD in het XML-document maken. Zoals vermeld in de vorige sectie ziet een DTD-referentie er als volgt uit:

Terugkerend naar Listing 14.1 zien we dat kookboek de naam is van het hoofdelement, en kookboek.dtd de naam van het DTD-bestand. De inhoud van de DTD wordt weergegeven in Lijst 14.2 en hieronder gedetailleerde beschrijvingen alle lijnen.

Lijst 14.2. DTD voor vermelding 14.1 (cookbook.dtd)

] >

Wat betekent dit mysterieuze document? Ondanks externe complexiteit, het is eigenlijk heel simpel. Laten we de volledige inhoud van Listing 14.2 eens doornemen:

Voor ons ligt de XML-proloog, die hierboven al werd genoemd.

De derde regel beschrijft het XML-element, in dit geval het kookboekhoofdelement. Het wordt gevolgd door het woord recept, tussen haakjes. Dit betekent dat kookboektags een subtag bevatten met de naam recept. Het + teken geeft aan dat de bovenliggende kookboektags een of meer paren recepttags bevatten.

De vierde regel beschrijft de recepttag. Er staat dat de recepttag vier subtags heeft: titel, beschrijving, ingrediënten en proces. Omdat tagnamen niet worden gevolgd door herhalingsindicatoren (zie de volgende sectie), moeten recepttags precies één paar van elk van de genoemde tags bevatten.

Hier is de eerste definitie van een tag die geen geneste tags bevat. Het bevat per definitie #PCDATA, dit zijn willekeurige tekengegevens die niet als onderdeel van de opmaak worden beschouwd.

Het element ingrediënten bevat per definitie een of meer tags met de naam ingrediënt. Raadpleeg vermelding 14.1 en u zult het begrijpen.

Omdat het ingrediëntelement overeenkomt met één ingrediënt, is het logisch dat het element eenvoudige karaktergegevens bevat.

Het proceselement bevat een of meer exemplaren van het stapelement.

Het stapelement komt, net als het ingrediëntelement, overeen met een afzonderlijk item in een lijst met meer hoog niveau. Daarom moet het tekengegevens bevatten.

Merk op dat het receptelement in Listing 14.1 een attribuut bevat. Dit attribuut, categorie, specificeert de algemene categorie waartoe het recept behoort - in het gegeven voorbeeld de categorie "Italiaans" (Italiaans). De ATTLIST-definitie specificeert zowel de elementnaam als de attribuutnaam. Bovendien vereenvoudigt het toewijzen van elk recept aan een specifieke categorie de classificatie, zodat het attribuut verplicht wordt verklaard (#REQUIRED).

De laatste regel completeert eenvoudigweg de DTD-definitie. De definitie moet altijd goed ingevuld zijn, anders ontstaat er een fout.

Ter afsluiting van dit gedeelte geef ik een samenvatting van de belangrijkste componenten van een typisch DTD-bestand:

  • elementtypeverklaringen;
  • attribuutdeclaraties;
  • ID, IDREF en IDREFS;
  • entiteitsverklaringen.

We hebben een aantal van deze componenten al gezien in Listing 14.2. Elk onderdeel zal hieronder in meer detail worden beschreven.

Elementdeclaraties

Alle elementen die in een XML-document worden gebruikt, moeten worden gedefinieerd in de DTD die bij het document hoort. We hebben al twee veelvoorkomende soorten definities gezien: voor een element dat andere elementen bevat, en voor een element dat tekengegevens bevat. Deze definitie geeft aan dat het element alleen karaktergegevens bevat:

De volgende definitie van het proceselement zegt dat het precies één genest element bevat dat stap wordt genoemd:

Processen met één stap zijn echter vrij zeldzaam - hoogstwaarschijnlijk zullen er verschillende stappen zijn. Om aan te geven dat een element een of meer exemplaren van een genest stapelement bevat, gebruikt u de herhalingsvlag:

Het aantal geneste elementen kan op verschillende manieren worden ingesteld. Volledige lijst elementoperatoren worden gegeven in de tabel. 14.1.

Tabel 14.1. Elementoperatoren

Als een element meerdere subelementen bevat, moeten deze worden vermeld, gescheiden door komma's, in de definitie van het bovenliggende element:

Omdat herhalingskenmerken niet zijn gespecificeerd, moet elke tag precies één keer voorkomen.

De elementdefinitie wordt verfijnd met behulp van logische operatoren. Stel dat u werkt met recepten waarin altijd pasta met een of meer soorten kaas of vlees voorkomt. In dit geval wordt het ingrediëntelement als volgt gedefinieerd:

Omdat het pasta-element aanwezig moet zijn in het ingrediëntelement, wordt dit aangegeven met het herhalingsteken +. Daarna volgt een kaaselement of een vleeselement; we scheiden de alternatieven met een verticale balk en plaatsen ze tussen haakjes met een +-teken, aangezien het recept altijd het een of het ander bevat.

Er zijn andere soorten elementdefinities. We hebben alleen de eenvoudigste gevallen bekeken. Het verstrekte materiaal is echter voldoende om de voorbeelden in de rest van dit hoofdstuk te begrijpen.

Attribuutdeclaraties

Elementattributen beschrijven de waarden die aan elementen zijn gekoppeld. XML-elementen zoals HTML-elementen, kan nul, één of meer attributen hebben. De algemene syntaxis voor het declareren van attributen is als volgt:

ElementName specificeert de naam van het element dat in de tag moet worden opgenomen. De attributen die aan het element zijn gekoppeld, worden vervolgens vermeld. Elke attribuutdeclaratie bestaat uit drie hoofdcomponenten: een naam, een gegevenstype en een vlag die de kenmerken definieert van dit attribuut. Verklaringen van andere attributen kunnen in plaats van het weglatingsteken(...) worden geplaatst.

We zagen al een eenvoudige attribuutdeclaratie in Listing 14.2:

Zoals echter uit het bovenstaande blijkt algemene definitie, is gelijktijdige declaratie van meerdere attributen toegestaan. Laten we zeggen dat u naast het categorieattribuut een extra moeilijkheidsattribuut aan het receptelement wilt koppelen. Beide attributen worden in dezelfde lijst gedeclareerd:

Advertenties opmaken op een vergelijkbare manier optioneel; declaraties met meerdere regels zijn echter duidelijker dan declaraties met één regel. Omdat beide attributen vereist zijn, kan de reci re-tag bovendien niet beperkt worden tot slechts één attribuut; hij moet beide attributen tegelijk bevatten. De volgende tag wordt bijvoorbeeld als ongeldig beschouwd:

Waarom? Omdat het categorieattribuut ontbreekt. Correcte tag moet beide attributen bevatten:

Speciale voorwaarden voor attribuutverwerking worden beschreven door drie vlaggen in de tabel. 14.2.

Tabel 14.2. Kenmerkvlaggen

Kenmerktypen

Een elementattribuut kan worden gedeclareerd met een bepaald type. De attribuuttypen worden hieronder beschreven.

CDATA-attributen

Heel vaak bevatten attributen algemene karaktergegevens. Deze attributen worden CDATA-attributen genoemd. Het volgende voorbeeld kwam we al tegen aan het begin van deze sectie:

ID-, IDREF- en IDREFS-kenmerken

Het idee om gegevens (bijvoorbeeld informatie over een gebruiker of product opgeslagen in een database) op ondubbelzinnige wijze weer te geven via identificatiegegevens is in eerdere hoofdstukken van het boek meerdere keren tegengekomen. Identifiers worden ook vaak gebruikt in XML omdat kruisverwijzingen tussen documenten niet beperkt zijn tot gemeenschappelijke taken gegevensverwerking, maar ook in Wereldwijd Web(hyperlinks).

Element-ID's worden toegewezen aan het ID-attribuut. Stel dat u aan elk recept een unieke ID wilt koppelen. Het overeenkomstige DTD-fragment zou er als volgt uit kunnen zien:

Hierna zou de declaratie van het receptelement in het document er als volgt uit kunnen zien:

Spaghetti alla Carbonara

Het recept wordt uniek geïdentificeerd door de identificatie ital003. Merk op dat het redpe-id attribuut van het type ID is, dus ital003 kan niet gebruikt worden als de waarde van het recept-id attribuut van een ander element, anders zal het document als syntactisch ongeldig beschouwd worden. Laten we nu zeggen dat u later vanuit een ander document naar dit recept wilt verwijzen, bijvoorbeeld vanuit de lijst met favoriete recepten van een gebruiker. Dit is waar kruisverwijzingen en het IDREF-attribuut een rol spelen. Aan het IDREF-attribuut wordt een ID toegewezen die wordt gebruikt om naar een element te verwijzen, vergelijkbaar met hoe een URL wordt gebruikt om een ​​pagina in een hyperlink te identificeren. Beschouw het volgende XML-codefragment:

Tijdens documentverwerking XML-element wordt vervangen door een meer visuele link naar het recept met de opgegeven identificatie (bijvoorbeeld de naam van het recept). Het zal waarschijnlijk worden opgemaakt als een hyperlink, zodat u gemakkelijker naar het opgegeven recept kunt navigeren.

Optelbare attributen

Bij het declareren van een attribuut kunt u alle geldige waarden vermelden die door het attribuut worden geaccepteerd. In ons voorbeeld zou dit handig zijn omdat u onmiddellijk een lijst met geldige categorieën kunt definiëren. Bovenstaande aankondiging is geschreven in het volgende formulier:

Houd er rekening mee dat wanneer u geldige invoerlijsten gebruikt, u het CDATA-type niet in de declaratie hoeft op te nemen, omdat alle vermelde waarden in CDATA-indeling zijn.

Opgesomde kenmerken met standaardwaarde

Soms is het handig om een ​​standaardwaarde voor een attribuut te declareren. De kans is groot dat u dit al eerder heeft gedaan bij het maken van formulieren met vervolgkeuzelijsten. Als de meeste recepten in uw kookboek bijvoorbeeld Italiaans zijn, wordt het receptattribuut vaak gecategoriseerd als Italiaans. In dit geval kan de Italiaanse categorie als standaard worden toegewezen:

Als het categorieattribuut niet expliciet is opgegeven, is het standaard Italiaans.

ENTITY- en ENTITIES-kenmerken

Gegevens in XML-documenten bestaan ​​niet altijd uit tekst; het document kan ook binaire informatie bevatten (bijvoorbeeld afbeeldingen). Er kan naar dergelijke gegevens worden verwezen met behulp van het entiteitsattribuut. In de beschrijving van het beschrijvingselement kunt u bijvoorbeeld het receptreceptPicture-attribuut opgeven met een grafische afbeelding:

U kunt ook meerdere entiteiten tegelijk declareren door ENTITY te vervangen door ENTITIES. Waarden worden gescheiden door spaties.

NMTOKEN- en NMTOKENS-attributen

NMTOKEN-attributen zijn tekenreeksen die in een beperkte set zijn opgenomen. Bij het declareren van een attribuut met het type NMTOKEN wordt ervan uitgegaan dat de attribuutwaarde overeenkomt vastgestelde beperkingen. Normaal gesproken bestaat de waarde van het NMTOKEN-attribuut uit één woord:

U kunt meerdere attributen tegelijk declareren door NMTOKEN te vervangen door NMTOKENS. Waarden worden gescheiden door spaties.

Entiteitsverklaringen

Een entiteitsdeclaratie is vergelijkbaar met de opdracht definiëren in sommige programmeertalen, waaronder PHP. Entiteitsreferenties zijn kort genoemd in de vorige sectie, "Introductie van XML-syntaxis." Voor het geval wil ik u eraan herinneren dat een entiteitslink wordt gebruikt als vervanging voor een ander stuk inhoud. Wanneer een XML-document wordt verwerkt, worden alle exemplaren van een entiteit vervangen door de inhoud die deze vertegenwoordigt. Er zijn twee soorten entiteiten: intern en extern.

Interne entiteiten

Interne entiteiten zijn als tekenreeksvariabelen die een naam aan een stuk tekst koppelen. Als u bijvoorbeeld een naam wilt definiëren voor een link naar auteursrechtinformatie, kunt u een entiteit als volgt declareren:

Tijdens de documentverwerking worden alle exemplaren van &Copyright vervangen door de tekst “Copyright 2000 UwBedrijfsnaam. Alle rechten voorbehouden." Alle XML-code in de vervangende tekst wordt behandeld alsof deze aanwezig is in het originele document.

Interne entiteiten zijn handig in situaties waarin u van plan bent de entiteit op een relatief kleine manier te gebruiken. grote hoeveelheden XML-documenten. Als u een groot aantal documenten heeft, kunt u beter externe entiteiten gebruiken.

Externe entiteiten

Externe entiteiten worden gebruikt om te verwijzen naar inhoud in een ander bestand. Entiteiten van dit type kunnen bevatten tekst informatie, maar kan ook verwijzen naar binaire gegevens (bijvoorbeeld afbeeldingen). Laten we terugkeren naar het vorige voorbeeld. Laten we zeggen dat u besluit uw auteursrechtinformatie in een apart bestand op te slaan, zodat u deze in de toekomst gemakkelijker kunt bewerken. De link naar het gemaakte bestand ziet er als volgt uit:

Wanneer het XML-document vervolgens wordt verwerkt, worden alle &Copyright-verwijzingen vervangen door de inhoud van het copyright.xml-document. Alle XML-code in de vervangende tekst wordt behandeld alsof deze aanwezig is in het originele document.

Externe entiteiten zijn ook nuttig als referentie grafische afbeeldingen. Als u bijvoorbeeld een grafisch logo in een XML-document wilt opnemen, maakt u een externe entiteit:

XML-bronnen

Hoewel het bovenstaande materiaal voldoende is om te begrijpen basisstructuur XML-documenten, deze beschrijving is niet compleet. Hieronder vindt u links naar internetbronnen met meer gedetailleerde informatie:

De rest van het hoofdstuk laat zien hoe u PHP kunt gebruiken om XML-documenten te verwerken. Op het eerste gezicht lijkt de taak erg moeilijk (lexicale analyse van welk document dan ook veroorzaakt veel problemen).

Maar als je eenmaal bekend bent met de basisstrategie voor het werken met XML in PHP, blijkt alles verrassend eenvoudig.