Archief - [prog] [dtd]

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

sarnath

Legacy Member
Ik heb eens een vraagje over de validatie van een xml document, tis vrij lang geleden dat ik da nog heb gebruikt en heb het nu nodig op t werk, maar vind niet direct het nut van dtd.

stel ik heb een xml document :

Code:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

en het dtd document ervan :

Code:
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

stel dat je nu een element in je xml document verandert, bijvoorbeeld van een <body> tag <bdoy> makan, zonder dtd krijg je dan al de opmerking dat het incorrect is.

Als ik nu een bijvoorbeeld eens een element toevoeg wat niet bij de dtd staat dan krijg ik hier helemaal geen melding van.

Wat is dan precies het nut van een zo een dtd document ook weer? want daar vind ik online geen enkele deftige uitleg van buiten dat het "uw document valideert"

op deze site (http://www.xeml.net/ccdtdxml.html) maken ze trouwens een xml document aan en zetten ze in het dtd document :

Code:
<!DOCTYPE projects [
	<!ELEMENT projects (project*)>
	<!ELEMENT project (photo*)>
	<!ELEMENT project (project_order, name, desc?)>
	<!ELEMENT photo (photo_name)>
	<!ELEMENT project_order (#PCDATA)>
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT desc (#PCDATA)>
	<!ELEMENT photo_name (#PCDATA)>
	<!ATTLIST project ID CDATA #REQUIRED>
	<!ATTLIST photo ID CDATA #REQUIRED>
]>

en in het xml document een verwijzing :
Code:
<!DOCTYPE projects SYSTEM "projects.dtd">

waar ik dan wel een foutmelding krijg dat je geen twee keer de type mag declareren, dus is het fout en mijn eerste voorbeeld correct toch?

Emerxill

Legacy Member
DTD moet ge zien als de documentatie/gebruiksaanwijzing van uw structuur.
Als gij bijv een een parser hebt geschreven voor om dat soort XMLs te verwerken en andere gebruikers willen ook XML-bestanden maken die door uw parser verwerkt worden, moeten die weten aan welke regels ze zich moeten houden.

In Eclipse bijv kan de xml die ge maakt on-the-fly worden gevalideerd adhv de DTD. Op die manier weet een developer direct of de xml gaat aangenomen worden door de parser.

sarnath

Legacy Member
yeps het is idd in de eerste plaats een schema van de structuur van uw xml document, maar indien je dus iets toevoegt aan je xml document (een extra tag ofzo) dan wordt er geen melding van gemaakt in je browser ofzo, dus moet je daar toch je eigen validator voor schrijven dan?

$ph!nx

Legacy Member
Je moet zowiezo al opletten met welke browser je controleert, aldus w3schools:
Note: Only Internet Explorer will actually check your XML against the DTD. Firefox, Mozilla, Netscape, and Opera will not.

Tags toevoegen in je xml maar niet aan je dtd zal geen effect hebben op de controle, zolang de structuur van de tags in je xml correct zijn zoals vermeld in je dtd. Hier zal je dus zelf moeten gaan controleren

sarnath

Legacy Member
$ph!nx zei:
Je moet zowiezo al opletten met welke browser je controleert, aldus w3schools:

Tags toevoegen in je xml maar niet aan je dtd zal geen effect hebben op de controle, zolang de structuur van de tags in je xml correct zijn zoals vermeld in je dtd. Hier zal je dus zelf moeten gaan controleren

yeps, idd, dacht indertijd dat dit vanzelf gebeurde, maar had er toen zelf een validator voor gemaakt, heb m teruggevonden. alvast bedankt :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan