XML en het gebruik ervan in de DMFA W. Heirman, Functioneel analist, SmalS-MvM
Inhoud XML - algemeen De DMFA & XML Syntaxis DTD, Schema Parsers glossarium schema voorbeeld
Wat is XML ? eXtensible Markup Language een syntaxis voor de beschrijving van documenten een meta-taal beschrijft de semantiek en de structuur niet alleen voor het Web
Waarom XML ? (1) Per definitie is een XML-document gestructureerd (men moet de schema’s en vormcontroles ervan opnieuw uitvinden voor het flat-formaat) Flexibiliteit (wijziging, toevoeging, uitbreiding) waarbij de impact op de toepassingen geminimaliseerd wordt Validatie van de documenten aan de bron en op gestandaardiseerde wijze Technologieën voor verwerking kosten weinig en zijn zeer goed verspreid (<>EDI) Vrij van licentie, standaard en genormaliseerd Dit is het goede moment ...
Waarom XML ? (2) Zelf-beschrijvend document Open standaard, onafhankelijk van het platform, goed ondersteund Uitwisseling van gegevens tussen toepassingen Beschikbaarheid van vele gratis tools Leesbaar door een mens
XML - structuur en semantiek Een XML-document vormt een boomstructuur De namen van de elementen en attributen weerspiegelen (als mogelijk) het type element <Person SequenceNr=“12”> <Name> <First>Albert</First> <Last>Einstein</Last> </Name> <Age>56</Age> </Person>
XML - syntaxis Een XML-document moet “goed gevormd” zijn: openende en sluitende tags uniek root-element lege elementen beëindigd met /> geen overkoepeling van elementen attribuutwaarde tussen “” < en & alleen begin tags en entiteiten ... De parsers moeten de misvormde documenten verwerpen
XML - declaratie Elk document mag (zou moeten) beginnen met <?xml versie =“1.0” encoding=“UTF-8” standalone=“yes” ?> Versie: verplicht, steeds 1.0 Encoding: facultatief, standaard UTF-8 of UTF-16 Standalone: facultatief (yes indien geen externe entiteiten)
Structuur van een DTD-document Document Type Definition Bepaalt de woordenschat Bepaalt de structuur waaraan een geldig document moet voldoen <!ELEMENT Person (Name, Age) > <!ATTLIST Person SequenceNr CDATA #REQUIRED > <!ELEMENT Name (First, Middle?, Last) > <!ELEMENT Age (#PCDATA) > <!ELEMENT First (#PCDATA)> <!ELEMENT Middle (#PCDATA)> <!ELEMENT Last (#PCDATA)>
Structuur van een DTD-document De instantie van een XML-document kan verwijzen naar zijn DTD (intern of extern) <?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE Person SYSTEM “http://www.einstein.com/DTD/Person.dtd” > <Person SequenceNr=“1”> ...
Structuur van een DTD-document <Person SequenceNr=“1”> <Name> <First>Albert</First> <Last>Einstein</Last> </Name> <Age>56</Age> </Person> <Middle>Klein</Middle> <Person>
Structuur XML-Schema DTD-problemen : geen XML-syntaxis geen typering van elementinhoud weinig uitbreidbaar
Structuur XML-Schema XML-Schema Alternatief : Relax NG, Schematron... XML-syntaxis, rijke en uitbreidbare typering, mogelijkheid om het aantal elementen, kinderen te bepalen, zonder de orde te moeten bepalen lokale en globale definitie, aanbeveling W3C (2 mei 2001), complex Alternatief : Relax NG, Schematron...
Parsers of XML-processors Gebruikt om een XML-document te lezen, om toegang te krijgen tot zijn inhoud en structuur Vaak in onderverwerking van een andere module. Niet-validerende Parser : rapporteert alleen de XML-syntaxisfouten Validerende Parser : rapporteert bovendien alle schendingen van de regels voorzien in een DTD of een schema
Parsers of XML-processors Model dat de feiten beschrijft (event-driven) : het document wordt sequentieel gelezen en de parser genereert opeenvolgende evenementen overeenkomend met de opeenvolging van de entiteiten. API SAX (Simple API for XML) Boomstructuurmodel (object) de inhoud van het document wordt gelezen en omgevormd in een hiërarchische boomstructuur API DOM (Document Object Model)
Parsers Niet-validerende Validerende XP - Java - wordt niet meer ondersteund Ælfred - Java Expath - C Validerende Xerces - Java, C, C++, Perl - DTD & Schema MSXML - C++, VB, - DTD & Schema (v4.0) Oracle XML - Java, C, C++ - DTD & Schema Crimson (ProjectX, Xerces2) - Java - DTD libxml2 (Gnome) - C, Perl - DTD Sun Multischema XML Validator (Preview)
Hoe een XML-document aanmaken ? Onverschillig welke tekst-editor ASCII, ISO-8859-1, UTF-8 Printf(“<Person>%s</Person>”,&person); DISPLAY “<Person>”person”</Person>”.L theDoc.person.appendChild(theDoc.createTextNode (personstring); Transformator (al dan niet commercieel)
Het XML-melkwegstelsel Naast het formaat van het document bestaan er talrijke (min of meer interessante) XML-toepassingen. Bv. : XSL (XLST, XSL-FO) Xpath, Xpointer, Xlink XHTML, SVG ebXML, RosettaNet... (woordenschat) XML Signature, SOAP, etc. http://www.w3c.org/
C= conditionnel (Obligatoire si) De DMFA & XML Déclaration Form Reference Employer C ontributions Worker Natural Person I-1 n Declaration Unrelated record to natural person C-n I-1 C-n I-n Occupation Worker Deduction Student Worker Indemnity C-n Contribution C-n Contribution Contribution WAPM C-n C-1 C-1 C-n Service Dismissed Early Remun Deduction Statutory Retirement C-n C-n C-n Worker Contribution Contribution C-1 C-2 I= indispensable C= conditionnel (Obligatoire si) n= plusieurs
De DMFA & XML Woordenschat
De DMFA & XML De structuur: bepaald in een XML-schema : DMFA.xsd
De DMFA & XML : voorbeeld <?xml version="1.0" encoding="UTF-8"?> <DclMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="DMFA.xsd"> <Dmfa Block="YES"> ... <Deduction Block="YES”> <DeductionCode>9999</DeductionCode> <OccupationOrWorkerRecordLink>99</OccupationOrWorkerRecordLink> <CalculationBasis>1</CalculationBasis> <DeductionAmount>99999999999</DeductionAmount> <NbrMonthsManagementCost>3</NbrMonthsManagementCost> <ReplacedINSS>99999999999</ReplacedINSS> <ApplicantINSS>99999999999</ApplicantINSS> <CertificateOrigin>99999999999</CertificateOrigin> </Deduction> </Dmfa> </DclMessage>
De DMFA & XML Publiek XML-schema (zoals het moet) http://www.socialsecurity.be
VRAGEN ?