210 likes | 381 Views
XML andmefailide valideerimine ja Transofrmatsioonid. Mait Poska. Meeldetuletus(i). XML Reeglid Suured-väiksed tähed on olulised(tõstutundlik) Iga tag peab lõppema Struktuur tuleb hästi disainida Atribuutide väärtused jutumärkide vahele Üks ja ainult üks juurelement
E N D
XMLandmefailide valideerimine ja Transofrmatsioonid Mait Poska
Meeldetuletus(i) • XML • Reeglid • Suured-väiksed tähed on olulised(tõstutundlik) • Iga tagpeab lõppema • Struktuur tuleb hästi disainida • Atribuutide väärtused jutumärkide vahele • Üks ja ainult üks juurelement • Elemendinimi ei tohi sisaldada tühikut
Meeldetuletus(ii) • XMLi atribuudid • Atribuut võimaldab elemendile lisada infot • Aribuudi väärtused alati ülakomade või jutumärkide vahele! • Ühte atribuuti ei saa kasutada korduvalt ühe elemendi juures <kirje type=“midagi” type=“sedagi” /> • Artibuuti võib kasutada korduvalt erinevate elementide juures • <kirje type=“midagi” /> • <kirje type=“sedagi” />
XMLi nimeruumid • Aitab välistada konflikte elementide nimetamisel
Xmli valideerimine • Mis on xml’i valideerimine? • Mille jaoks seda teha tuleb? • Kuidas Seda tehakse? • Milline on korrektne XML?
Kuidas seda saavutada? • DTD – Document TypeDefinition • XSD – XMLi skeemifail (XML schemadefinition) • Mõeldud XML andmefaili struktuuri täpseks struktureerimiseks • Võimalik on määrata • Elementide ning atribuutide nimetused ja väärtused • Elementide ja atribuutide andmetüübid
DTD - Elemendid • Elemendi defineerimine • <!Element elemendi-nimi (elemendi-sisu)> • Elemendi andmete defineerimine • <!Element elemendi-nimi (#PCDATA)> • <!Element elemendi nimi (#CDATA)> • Elemendid alamelementidega • <!Element elemendi-nimi (alam1, alam2) • Elemendi korduste arvu defineerimine • <!Element elemendi-nimi (alam)> = 1 • <!Element elemendi-nimi(alam+)> = miinimum 1 • <!Element elemendi-nimi(alam*)> =null või rohkem • <!Element elemendi-nimi(alam?)> = 0 või 1
DTD - Atribuudid • Üleüldine süntaks • <!ATTLIST elemnimiattrnimiattrtyypvaikimisvaartus> • Atribuutidest täpsemalt: • http://www.xmlfiles.com/dtd/dtd_attributes.asp
DTD – Inline ja External • Inline • asub XML andmefailis • <!DOCTYPE juurelement [ <!Element ...]> • External • Hoitakse eraldi • Defineeritakse XMLis • <!DOCTYPE juurelementSYSTEM "fail.dtd">
XSD • Vastab XMLi reeglitele • <?xmlversion="1.0" encoding="utf-8"?> • Ühe elemendi defineerimine: <?xmlversion="1.0" encofing="utf-8"?> <xs:schemaxmlns:xs="http://www.w3.org/29asd> <xs:elementname="teade" type="xs:string" /> </xs:schema> • Aga kui elemente on rohkem....
XSD – erinevad atribuudid • complexType – element, mille sisse saab teisi elemente paigutada • Sequence/all/choice – kas elementide järjestus on oluline • Name – elemendi või atribuudi nimetus • Type – andmete tüüp • maxOccurs/minOccurs – elementide korduste arv
XSD – Automaatne genereerimine kasutades visualStudiot • DEmo
XSD – Automaatse genereerimise probleemid • Automaatse genereerimise puhul kasutatakse XMl andmefailis olevat infot • Numbrilised väärtused • Andmetüübid • Numbriliste väärtuste suurused • Elementide järjestus
XSD - Meelespea • Usalda, aga kontrolli
XSD ja DTD võrldus • DTD • Esimene meetod, mida kasutatid XML andmefaili valideerimiseks • Ülesehitus on lihtne ja minimalistlik • Kasutatakse enimlevinud andmetüüpe • XSD • Võimaldab väga detailselt kirjeldada andmestruktuure • Ülesehitus võib tunduda keerulisem • OOP põhimõtted
XSD Põhjal näidisandmete genereerimine • http://msdn.microsoft.com/en-us/library/aa302296.aspx
XSL • XMl-failidest andmete tekstiline eraldamine • Järgib XMl’i reegleid • Võimaldab xml-failist sobivaid andmeid välja küsida • Xpath • Mõeldud elementide ja atribuudite vahel liikumiseks
XSL – Mõningad reeglid • Eelpool mainitud: Järgib XMl’i reegleid • Reeglid • XML’i tüübideklaratsioon • Vaba rida ja tühik deklaratsioonirea ees on keelatud • Atribuut xmlns:xsl määrab, et kõik alguselga XSL elemendid kuuluvad konstandi määratud nimeruumi ning ei saa sealtkaudu muude elementidega segamini minna
XSL – Mõningad Reeglid(II) • XSL:output määrab väljundi • Html/text/XML • XSL:Template Määrab koha, kus küsitakse andmeid
XSL – Mõningad elemendid • <xsl:value-ofselect="elemendiasukoht" /> • <xsl:for-each .... /> • <xsl:if test="tingimus" /> • <xsl:choose> • <xsl:when test="tingimus"> • .... • </xsl:when> • <xsl:otherwise> • ... • </xsl:otherwise> • </xsl:choose> • http://minitorn.tlu.ee/~jaagup/kool/java/kursused/10/xmlrak/trykk/xmlrak.pdf