XML-skeem vs. DTD
DTD ehk Document Type Definition ja XML Schema, mida tuntakse ka kui XSD, on kaks viisi XML-dokumendi struktuuri ja sisu kirjeldamiseks. DTD on neist kahest vanem ja sellisena on sellel piiranguid, mida XML-skeem on püüdnud parandada. Esimene erinevus DTD ja XML-skeemi vahel on nimeruumi teadlikkus; XML-skeem on, DTD aga mitte. Nimeruumi teadlikkus eemaldab kahemõttelisuse, mis võib põhjustada teatud elementide ja atribuutide olemasolu mitmest XML-i sõnavarast, andes neile nimeruumid, mis panevad elemendi või atribuudi konteksti.
Osa põhjusest, miks XML-skeem on nimeruumist teadlik, samal ajal kui DTD pole, on asjaolu, et XML-skeem on kirjutatud XML-is ja DTD mitte. Seetõttu saab XML-skeeme töödelda programmiliselt nagu iga XML-dokumenti. XML-skeem välistab ka vajaduse teise keele õppimiseks, kuna see on kirjutatud XML-is erinevalt DTD-st.
Teine XML-skeemi peamine eelis on võime rakendada tugevat masinakirja. XML-skeem võib määratleda teatud elementide andmetüübi ja isegi piirata seda kindla pikkuse või väärtusega. See võime tagab XML-dokumendis salvestatud andmete täpsuse. DTD-l puuduvad tugevad tippimisvõimalused ja ta ei suuda sisu valideerimist andmetüüpidesse. XML-skeemil on hulgaliselt tuletatud ja sisseehitatud andmetüüpe sisu kontrollimiseks. See annab eelpool nimetatud eelise. Sellel on ühtlased andmetüübid, kuid kuna kõik töötlejad ja valideerijad peavad neid andmetüüpe toetama, põhjustab see sageli vanemate XML-parserite tõrkeid.
DTD tunnusjoon, mida inimesed peavad nii eeliseks kui ka puuduseks, on võime määratleda DTD-d inline kujul, mis XML-skeemil puudub. See on hea väikeste failidega töötamisel, kuna see võimaldab teil sisaldada ühes ja samas dokumendis nii sisu kui ka skeemi, kuid suuremate dokumentide puhul võib see olla puuduseks, kuna tõmbate sisu iga kord, kui skeemi alla laadite . See võib põhjustada tõsiseid üldkulusid, mis võivad halvendada jõudlust.
Kokkuvõte:
1. XML-skeem on nimeruumist teadlik, DTD aga mitte.
2. XML-skeemid kirjutatakse XML-is, DTD-d mitte.
3. XML-skeem on tugevalt trükitud, DTD aga mitte.
4. XML-skeemil on palju tuletatud ja sisseehitatud andmetüüpe, mis pole DTD-s saadaval.
5. XML-skeem ei võimalda sisemisi määratlusi, samas kui DTD seda teeb.