Toon posts:

[XML] DTD of XSD gebruiken?

Pagina: 1
Acties:

Verwijderd

Topicstarter
In mijn zoektocht naar de mogelijkheid om je XMLdocument te valideren tegen een definitie van de markup language die voor het document geldt, kwam ik erachter dat je zowel tegen een DTD als een XSD kan valideren.
Voor zover ik het nu door heb, dienen beide types voor het zelfde doel, alleen is de XSD een nieuwere variant.
XSD schijnt alleen als nadeel te hebben dat het complexer is dan gebruik/definitie van een DTD.

Is het gebruikt van een XSD nu beter? Biedt het voordelen of is het puur persoonlijke voorkeur? :)

  • CubicQ
  • Registratie: September 1999
  • Laatst online: 13:33
Zoals je zelf al zegt: DTD's zijn makkelijker. Een DTD kan ik zonder problemen zelf lezen, en als het moet ook nog wel uit m'n hoofd schrijven (al heb ik dat te lang geleden voor het laatst gedaan om dat echt te doen). Een schema wordt daarentegen al snel zo ingewikkeld dat het met de hand doen niet echt meer een optie is.

Maar ja, met een schema kan je meer. Dingen als: attribuut met als type integer met waardes tussen de 10 en de 15, dat gaat gewoon niet met DTD.

Dus wat je moet gebruiken ligt er imho voornamelijk aan of je aan DTD genoeg hebt.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Schema`s zijn krachtiger dan dtd`s en geniet geloof ik op dit moment de voorkeur als xml validatie-techniek. Ik gebruik het zelf ook en ben nog niet echt in de problemen gekomen met de complexitieit. In het begin is het even aanklooien, maar een goed boek bv Professional XML van Wrox, kan wonderen verrichten.

Verwijderd

Topicstarter
Ah, je kan dus met een schema bijvoorbeeld ook definieren dat tenminste 1 van de elementen van het type "BOOK" ofzo een attribute moet hebben met een bepaalde naam die de waarde "true" heeft ofzo?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
DTD is niets meer dan historie. Als je de mogelijkheid hebt om een W3C XML Schema te gebruiken (dit hangt met name af van je situatie: bedrijf, platform, klanten) en je de vraag echt zwart-wit stelt, dan is het antwoord simpel: W3C XML Schema.

Met W3C XML Schema heb je veel meer mogelijkheden. De klasse van XML documenten die je kan beschrijven in W3C XML Schema is veel groter dan die van DTD. De grootste beperking is dat in een DTD de terminal (element-namen) en non-terminals (typen) hetzelfde zijn. Je kan dus in een DTD geen elementen gebruiken met dezelfde naam, maar van ander type. Dit geldt voor zowel de element kinderen als voor de attributen van een element.

Je zou ook eens kunnen kijken naar RELAX NG. Een stuk eenvoudiger dan W3C XML Schema en zelfs nog krachtiger ook (wat formeel bewezen is).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Hmm.. ik weet niet of dat kan. Maar je kan in iedergeval er meer mee dan DTD. Als je voor je werk er iets mee moet doen, dan adviseer ik je echt een goed boek om ermee te werken.

Verwijderd

Topicstarter
mbravenboer schreef op 06 mei 2003 @ 14:48:
DTD is niets meer dan historie. Als je de mogelijkheid hebt om een W3C XML Schema te gebruiken (dit hangt met name af van je situatie: bedrijf, platform, klanten) en je de vraag echt zwart-wit stelt, dan is het antwoord simpel: W3C XML Schema.

Met W3C XML Schema heb je veel meer mogelijkheden. De klasse van XML documenten die je kan beschrijven in W3C XML Schema is veel groter dan die van DTD. De grootste beperking is dat in een DTD de terminal (element-namen) en non-terminals (typen) hetzelfde zijn. Je kan dus in een DTD geen elementen gebruiken met dezelfde naam, maar van ander type. Dit geldt voor zowel de element kinderen als voor de attributen van een element.

Je zou ook eens kunnen kijken naar RELAX NG. Een stuk eenvoudiger dan W3C XML Schema en zelfs nog krachtiger ook (wat formeel bewezen is).
Weet je ook toevallig een url met wat info hierover? Als ik bij google zoek, kom ik erg vaak de specificatie tegen en mensen die zeggen dat het geweldig maar echt concrete heldere implementatie gerichte info heb ik nog niet gevonden.

--edit: Sorry voor mijn luiheid. Maar als je toch zo een goede url weet, bedankt alvast.
--edit2: info over relax ng implementatie gebruik makende van het MSXML object is ook welkom :)

[ Voor 8% gewijzigd door Verwijderd op 06-05-2003 21:41 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12:03

Robtimus

me Robtimus no like you

CubicQ schreef op 06 mei 2003 @ 14:37:
Een schema wordt daarentegen al snel zo ingewikkeld dat het met de hand doen niet echt meer een optie is.
Dat valt soms wel mee hoor.

Ik heb voor mijn stage een DTD moeten opstellen, deze is totaal 370KB en bevat (inclusief lege regels) 7379 regels. Omdat ik tijd overhad, en veel waarden integers met beperkte waarde waren of strings volgens een bepaald pattern, heb ik hem omgezet (met de hand ja!) naar XML Schema. Resultaat: 281KB en 6791 regels.

Wel flink wat debugwerk nodig gehad wegens typo's 8)7, maar ja, hij was ook een stuk sneller af dan de DTD (ok, ook omdat ik de DTD nog moest creëren en de XSD was alleen een conversie).

Nuttige link: XSD Schema Validator

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
Verwijderd schreef op 06 May 2003 @ 21:20:
[...]


Weet je ook toevallig een url met wat info hierover? Als ik bij google zoek, kom ik erg vaak de specificatie tegen en mensen die zeggen dat het geweldig maar echt concrete heldere implementatie gerichte info heb ik nog niet gevonden.

--edit: Sorry voor mijn luiheid. Maar als je toch zo een goede url weet, bedankt alvast.
--edit2: info over relax ng implementatie gebruik makende van het MSXML object is ook welkom :)
en hoeveel regels zou dit zijn met een relax ng schema? :)

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12:03

Robtimus

me Robtimus no like you

Sorry, nu ben IK ff te lui >:)

[ Voor 23% gewijzigd door Robtimus op 06-05-2003 22:51 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
-NW:concrete heldere implementatie gerichte info heb ik nog niet gevonden.
http://www.relaxng.org/

De tutorial is een prima start:

RELAX NG Compacte Syntax - http://www.relaxng.org/compact-tutorial-20030326.html
RELAX NG - http://www.relaxng.org/tutorial-20030326.html
info over relax ng implementatie gebruik makende van het MSXML object is ook welkom :)
RELAX NG validators staan over het algemeen volkomen los van de gebruikte XML parser. Implementaties vind je hier: (en er zijn er genoeg :) )

http://www.relaxng.org/#validators

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
IceManX: Omvang DTD versus W3X XML Schema
Naast de beperkingen van DTD is een ander groot probleem van DTD het ontbreken van goede mogelijkheden tot abstractie. Er is alleen een soort syntaxtisch vervangingsmechanisme waarmee je dan wat zaken kan hergebruiken. W3C XML Schema en RELAX NG doen dat uiteraard veel beter.

Voor mijn gevoel is een W3C XML Schema ongeveer even groot als een RELAX NG schema, maar is de laatste een stuk eenvoudiger. Als je RELAX NG compacte syntax gebruikt is RELAX NG zonder enige twijfel het meest compact.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Bekijk overigens vooral ook Trang, een schema conversie tool van James Clark. Deze kan RELAX NG (waar mogelijk) naar W3C XML Schema omzetten en implementeert nog enkele andere conversies (met DTDs met name)

Voor alle conversie tools:
http://www.relaxng.org/#conversion

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Lijkt inderdaad wel praktisch dat Relax NG. Dan nu in de praktijk. :)
Pagina: 1