XML et son usage dans la DMFA Ph. Peeters, Analyste fonctionnel SmalS-MvM
Contenu XML - généralités La DMFA & XML Syntaxe DTD, Schéma Parsers glossaire schéma exemple
Qu’est-ce que XML ? eXtensible Markup Language une syntaxe pour la description de documents un meta-langage décrit la sémantique et la structure pas uniquement pour le Web
Pourquoi XML ? (1) Par définition, un document XML est structuré (il faut réinventer ses schémas et ses contrôles de forme pour le format plat) Flexibilité (modification, ajout, extension) en minimisant l’impact sur les applications Validation des documents à la source et de manière standardisée Technologies de traitement peu coûteuses et très bien diffusées (<>EDI) Libre de licence, standard et normalisé C’est le bon moment ...
Pourquoi XML ? (2) Document auto-descriptif Standard ouvert, indépendant de la plate-forme, bien supporté Echange de données inter-applications Disponibilité de nombreux outils gratuits Lisible par un humain
XML - structure et sémantique Un document XML forme une arborescence Les noms des éléments et attributs reflètent (si possible) le type de l’élément <Person SequenceNr=“12”> <Name> <First>Albert</First> <Last>Einstein</Last> </Name> <Age>56</Age> </Person>
XML - syntaxe Un document XML doit être “bien formé”: tags ouvrants et fermants élément root unique éléments vides terminés par /> pas de superposition d’éléments valeur d’attribut entre “ ” < et & uniquement début de tags et entités ... Les parsers sont tenus de rejeter les documents mal formés
XML - déclaration Tout document peut (devrait) débuter par <?xml version =“1.0” encoding=“UTF-8” standalone=“yes” ?> Version: obligatoire, toujours 1.0 Encoding: facultatif, UTF-8 ou UTF-16 par défaut Standalone: facultatif (yes si pas d’entités externes)
Structure d’un document - DTD Document Type Definition Définit le vocabulaire Définit la structure à laquelle doit répondre un document valide <!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)>
Structure d’un document - DTD L’instance d’un document XML peut faire référence à sa DTD (interne ou externe) <?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE Person SYSTEM “http://www.einstein.com/DTD/Person.dtd” > <Person SequenceNr=“1”> ...
Structure d’un document - DTD <Person SequenceNr=“1”> <Name> <First>Albert</First> <Last>Einstein</Last> </Name> <Age>56</Age> </Person> <Middle>Klein</Middle> <Person>
Structure XML-Schéma Problèmes DTD: Syntaxe non-XML pas de typage du contenu d’élément peu extensible
Structure XML-Schéma XML-Schéma Alternative : Relax NG, Schematron... syntaxe XML, typage riche et extensible, possibilité de fixer le nombre d’éléments, enfants sans devoir fixer l’ordre, définition locale et globale, recommandation W3C (2 mai 2001), complexe Alternative : Relax NG, Schematron...
Parsers ou processeurs XML Utilisés pour lire un document XML, accéder à son contenu et sa structure Généralement en sous-traitement d’un autre module. Parser non-validant : rapporte uniquement les erreurs de syntaxe XML Parser validant : rapporte en plus toutes violations aux règles prévues dans une DTD ou un schéma
Parsers ou processeurs XML Modèle événementiel (event-driven) : le document est lu séquentiellement et le parser génère une succession d’événements correspondant à l’enchaînement des entités. API SAX (Simple API for XML) Modèle arborescent (objet) le contenu du document est lu et transformé en une arborescence hiérarchique API DOM (Document Object Model)
Parsers Non-validants Validants XP - Java - n’est plus supporté Ælfred - Java Expath - C Validants 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)
Comment créer un document XML ? N’importe quel éditeur de texte ASCII, ISO-8859-1, UTF-8 Printf(“<Person>%s</Person>”,&person); DISPLAY “<Person>”person”</Person>”.L theDoc.person.appendChild(theDoc.createTextNode (personstring); Transformateur (commercial ou non)
La galaxie XML Au-delà du format de document, il existe une myriade d’applications XML (plus ou moins intéressantes). Ex. : XSL (XLST, XSL-FO) Xpath, Xpointer, Xlink XHTML, SVG ebXML, RosettaNet... (vocabulaire) XML Signature, SOAP, etc. http://www.w3c.org/
C= conditionnel (Obligatoire si) La 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
La DMFA & XML Vocabulaire
La DMFA & XML La structure: définie dans un schéma XML : DMFA.xsd
La DMFA & XML : exemple <?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>
La DMFA & XML XML Schéma public (comme il se doit) http://www.socialsecurity.be
QUESTIONS ?