Projekter indenfor datanet extensible Markup Language XML DIKU.PEH.787
Hvad er XML? Et meta sprog til beskrivelse af data dvs. det beskriver kun data, hverken præsentation, behandling eller noget andet XML er en SGML (Standard Generalized Markup Language) applikation dvs. reglerne for at lave et XML dokument er defineret på en sådan måde, at SGML software håndterer et XML dokument korrekt XML er en stripped-down SGML XML understøtter arbitrære markups dvs. enhver kan definerer sit eget data format XML er udviklet under W3C konsortiet World Wide Web Consortium: http://www.w3c.org XML er en åben standard dvs. alle kan frit anvende den XML Version 1.0 blev offentliggjort i februar 1998 DIKU.PEH.788
XML Design Goals ❶ XML shall be straightforwardly usable over the Internet ❷ XML shall support a wide variety af applications ❸ XML shall be compatible with SGML ❹ It shall be easy to write programs which process XML documents ❺ The number of optional features in XML is to be kept to the absolute minimum, ideally zero ❻ XML documents should be human-legible and reasonably clear ❼ The XML design should be prepared quickly ❽ The design of XML shall be formal and concise ❾ XML documents shall be easy to create ❿ Terseness in XML markup is of minimal importance Kilde: XML specification, http://www.w3.org/tr/1998/rec-xml-19980210 DIKU.PEH.789
Eksempel Menu (I) Menu kort Restauranens navn Ret type Ret Pris Beskrivelse DIKU.PEH.790
Eksempel Menu (II) rname Liam s Chowder House and Grill desc Warmed leek salad item price 6,95 menu graphic desc Prosciutto ham item price 7,95 graphic DIKU.PEH.791
XML Dokument: Menu (I) <?xml version="1.0" encoding='utf-8'?> <menu date="12nov1998"> <rname>liam's Chowder House and Grill</rname> <item type="appetizer"> <descr>warmed leek salad, coated with a balsamic vinegar</descr> <price units="usd">6.95</price> <graphic gtype="gif" src="http//:www.goodfood.com/menu/leek-salad.gif"/> </item> </menu> <!-- Following item is tasty! --> <item type="appetizer"> <descr>prosciutto ham with melon</descr> <price units="usd">7.95</price> <graphic gtype="jpeg" src="http//:www.goodfood.com/menu/ham-melon.gif"/> </item> DIKU.PEH.792
Tags Start tag <gi-name >, hvor gi-name er Generic Identifier og er Attribute Specification Angiver starten på et element, inklusiv specifikationen af de attributer, der gælder for elementet End tag </gi-name>, hvor gi-name er Generic Identifier på det element, der afsluttes Angiver slutningen på et element og kan ikke indeholde nogen attribut specifikation Empty-element tag <gi-name />, hvor gi-name er Generic Identifier og er Attribute Specification Kan ikke indeholde andre markup s eller tekst Kan indeholde attrubut specifikationer DIKU.PEH.793
Attribute Specifications Attributter er navngivne enheder, der definerer egenskaberne for en specifik instans af et element Placering Kan stå i start-tags og empty-element tags Hvad gør de Regler Specificerer attributter for elementet og tildeler disse attributter en værdi En attribut kan kun specificeres én gang for et givet element Attribute værdier skal være i anførselstegn (enten eller ) Attribute værdier må ikke indeholde tegnet <... DIKU.PEH.794
XML declaration and comments XML declaration: <?xml version= 1.0?> angiver at dette (efterfølgende data) er et XML dokument skal være første markup element mulige attributer: version, angiver XML versionen encoding, angiver den anvendte tegn indkodning standalone, angiver, om dokumentet kan læses og behandles uafhængigt af external entities Comments indledes med strengen <!-- og afsluttes med strengen --> kan indeholde alle tegn undtagen -- og --> kan deles over flere linier DIKU.PEH.795
XML Dokument: Menu (II) DIKU.PEH.796
Well-formed og Valid Well-formed betyder, at dokumentet følger XML standarden Et XML dokument er Valid, hvis det er well-formed og det er konsistent med syntaksen defineret i en DTD og DTD definerer alle elementer DIKU.PEH.797
Document Type Declaration (DTD) En DTD definerer syntaks reglerne for et dokuments elementer og attributter En DTD definerer entities og notations En DTD er en formaliseret beskrivelse af datastrukturen for et XML dokument En DTD kan enten placeres i starten af et XML dokument eller i en separat fil En DTD kan anvendes i flere forskellige dokumenter En DTD kan opdeles i flere dele, der hver især er placeres i en separat fil Valideringen af et XML dokument sker med en såkaldt XML-parser DIKU.PEH.798
Komponenter i en DTD Elementer (ELEMENT) er de dele, der indeholder data Attributter (ATTLIST) er de egenskaber, der er knyttet til hvert enkelt element. De fortæller noget om, hvordan data skal fortolkes Entiteter (ENTITY) pointere/variable, der refererer til information et andet sted (internt eller eksternt) DIKU.PEH.799
DTD for eksemplet Menu <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE menu [ <!-- menu has any number of items, each item containing a description, price, and optional graphic. --> <!ENTITY resto "Liam's Chowder House and Grill" > <!ELEMENT menu (rname, (item)*) > <!ATTLIST menu date CDATA #REQUIRED ref CDATA #IMPLIED rest CDATA #FIXED "&resto;" > <!ELEMENT rname (#PCDATA)*> <!ELEMENT item (descr, price, graphic?) > <!ATTLIST item type (appetizer entree dessert drink) "entree" > <!ELEMENT descr (#PCDATA)* > <!ELEMENT price (#PCDATA)* > <!ATTLIST price units CDATA #REQUIRED > <!ELEMENT graphic EMPTY > <!ATTLIST graphic gtype CDATA #REQUIRED src CDATA #REQUIRED > ]> Element -only Content Model Mixed Content Model EMPTY Content Model DIKU.PEH.800
Element Type Declaration (content model) EMPTY Content Model elementer, der følger denne model er tomme, dvs. ingen brugerdata. De kan kun optræde som emty-element tags ANY Content Model elementer, der følger denne model, kan indeholde alt, enhver kombination af data (tekst) og andre elementer Element-only Content Model elementer, der følger denne model, kan kun indeholde andre elementer, dvs. kan ikke indeholde data (tekst) Mixed Content Model elementer, der følger denne model, kan indeholde både andre elementer og data (tekst) der er defineret 2 former <!ELEMENT elem-name (#PCDATA)* > <!ELEMENT elem-name (#PCDATA elem1 elem2)* > DIKU.PEH.801
Element-only content model Fixed order angives med, a,b eller b,a,c Choice angives med a b eller b c a Repeat angives med *,?, +, eller ingen tegn * : nul eller flere? : nul eller en + : en eller flere : en og kun en eksempel: a, b* : a flugt af nul eller flere b Gruppering angives med ( ) eksempel: (a, (b, c?)*) : a fulgt af nul eller flere sekvenser af b fulgt af intet eller c DIKU.PEH.802
Attribute-List Declarations Attributter defineres med <!ATTLIST elem-name attribute-definitions> hvor attribute-definitions er af formen att-name type default-declaration type er enten et nøgleord eller et udtryk, der definerer attributtens type eksempler: enumerated-list : ( value1 value2 value3 ) string-type : CDATA default-declaration kan være #REQUIRED, attributten skal specificeres i alle elementer og der er ingen default værdi #IMPLIED, attributten kan specificeres i elementerne og der er ingen default værdi attr-value, attributten kan specificeres i elementerne og attr-value er default værdien #FIXED attr-value, attributten kan ikke tildeles andre værdier i en element instans. DIKU.PEH.803
XML Dokument med DTD: Menu (III) DIKU.PEH.804
XML Dokument med fejl: Menu (IV) Projekter indenfor datanet DIKU.PEH.805
Simple Textual Alarm Interface - STAI En Alarm Overvågnings specifikation baseret på OSI-management (X.733) TMN (Q.821) En protokol, der specificerer hvordan CMIP events kan sendes som almindelig tekst En samling templates, der gør anvendelsen nemmere DIKU.PEH.917
Eksempel på alarm (QTEXT) roiv-apdu{ invokeid = 45 operation-value = m-eventreport argument{ managedobjectclass = managedelement managedobjectinstance{ distinguishedname{ managedelementid = smsc facilityid = AD} } eventtime = 19961231235959.9+0100 eventtype = communicationsalarm eventinfo{ probablecause = 5 perceivedseverity = minor notificationidentifier = 345 additionaltext = This is a test of an alarm} } } DIKU.PEH.918
Alarm template (QTEXT) roiv-apdu{ invokeid = <invokeid> operation-value = m-eventreport argument{ managedobjectclass = <MOC> managedobjectinstance{ distinguishedname{ <DN>} } eventtime = <eventtime> eventtype = <eventtype> eventinfo{ probablecause = <cause> perceivedseverity = <severity> notificationidentifier = <notiid> additionaltext = <text>} } } DIKU.PEH.919
Eksempel på alarm (QXML) <?xml version="1.0" encoding='iso-8859-1' standalone="yes"?> <!DOCTYPE roiv-apdu SYSTEM "stai.dtd"> <roiv-apdu> <invokeid>45</invokeid> <operation-value oper="m-eventreport" /> <argument> <managedobjectclass>managedelement</managedobjectclass> <managedobjectinstance> <distinguishedname> <rdn attrname= managedelementid >smsc</rdn> <rdn attrname="facilityid">ad</rdn> </distinguishedname> </managedobjectinstance> <eventtime timetype="mix">19961231235959.9+0100</eventtime> <eventtype evtype="communicationsalarm" /> <eventinfo> <probablecause cause="5" /> <perceivedseverity severity="minor" /> <notificationidentifier>345</notificationidentifier> <additionaltext xml:lang="da">dette er en tekst med danske æ-ø-å</additionaltext> </eventinfo> </argument> </roiv-apdu> DIKU.PEH.932
STAI DTD (udpluk) <!-- ELEMENT and ATTLIST Specifications --> <!-- ********************************** -->.. <!ELEMENT eventtime (#PCDATA)> <!ATTLIST eventtime timetype (%eventtimechoises;) #REQUIRED > <!ELEMENT eventinfo (probablecause, perceivedseverity, notificationidentifier, additionaltext?)> <!ELEMENT probablecause EMPTY> %probablecause-grammer; <!ELEMENT perceivedseverity EMPTY> <!ATTLIST perceivedseverity severity (%severitychoises;) #REQUIRED > <!ELEMENT notificationidentifier (#PCDATA)> <!ELEMENT additionaltext (#PCDATA)> <!ATTLIST additionaltext xml:lang NMTOKEN "en-uk" > DIKU.PEH.933
STAI DTD (udpluk fortsat) <?xml version="1.0" encoding='utf-8'?> <!-- * QXML version 1.1 * Copyright (C) Tele Danmark 2000 --> <!-- * The event time has to follow one of three predefined format: --> <!ENTITY % eventtimechoises "local utc mix" > <!-- * The event type has to be one of the following predefined types: --> <!ENTITY % eventtypechoises "communicationsalarm qualityofservicealarm processingerroralarm equipmentalarm enviromentalalarm systemok" > <!-- * The severity of an alarm has to be one of the following predefined: --> <!ENTITY % severitychoises "cleared indeterminate critical major minor warning" > DIKU.PEH.934
STAI Schema (udpluk) <xsd:complextype name="eventtimetype" content="textonly" base="xsd:string" derivedby="extension"> <xsd:annotation> <xsd:appinfo>event Time Element</xsd:appinfo> <xsd:documentation> The event time..... </xsd:documentation> </xsd:annotation> <xsd:pattern value="(0) (((0[1-9]\d{2}) ([1-9]\d{3}) (00[1-9]\d{1}) (000[1-9]))((0[1-9]) (1[0-2]))((0[1-9]) ([1-2][0-9]) (3[0-1]))(([0-1][0-9]) (2[0-3]))([0-5][0-9])([0-5][0-9])[.][0-9](Z ([+ -](([0-1][0-9]) (2[0-3]))([0-5][0-9])))?)" /> <xsd:attribute name="timetype" use="required" > <xsd:simpletype base="xsd:nmtoken"> <xsd:enumeration value="local"> </xsd:enumeration> <xsd:enumeration value="utc"> </xsd:enumeration> <xsd:enumeration value="mix"> </xsd:enumeration> </xsd:simpletype> </xsd:attribute> </xsd:complextype> DIKU.PEH.935
XML Schema DTD skrevet i non-xml syntaks Schema flere basis datatyper defineret understøtter ikke namespace tillader brugerdefineret datatyper tilbyder kun meget begrænset datatyper understøtter nedarvning af datatyper understøtter namespace mange værktøjer tilgængelig meget udbredt udbredt kendskab og praktisk erfaring DIKU.PEH.936
XML Namespaces Anvendes til at angive unique universal names eks.: <part>window</part> kan anvendes i forbindelse med et hus og et program hvorimod <house:window xmlns:window= http://www.house.com/xml > <house:part>window</house:part> entydigt definerer, hvad der skal forstås dvs. et universal name består af : <prefix> : <local name> og som prefix er valgt at anvende URL s disse URL s skal dog ikke opfattes som et sted, hvor man kan hente informationer om, hvilke lokale navne der dækkes af et bestemt prefix DIKU.PEH.937
XSTL (XSL Transformations) (I) Projekter indenfor datanet XSTL er en del af XSL (Extensible Stylesheet Language), men kan udmærket anvendes alene XSLT genererer udfra et XML dokument et nyt XML dokument Output til HTML understøttes også På baggrund af instruktioner i et XSTL style sheet behandles input XML dokumentet, og output XML dokumentet genereres DIKU.PEH.938
XSTL (XSL Transformations) (II) Projekter indenfor datanet XML XLS/HTML XML Behandling WAP/WML DIKU.PEH.806
XSTL (XSL Transformations) - Eks. Menu DIKU.PEH.807
XSL for eksemplet Menu <xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/wd-xsl"> <xsl:template match="/"> <HTML> <HEAD> <TITLE>Menu example in HTML</TITLE> <STYLE TYPE="text/css"> BODY {font-family:tahoma,arial,sans-serif; font-size:10pt; font-weight:normal; line-height:140%} </STYLE> </HEAD> <BODY> <BR /> <DIV STYLE="font-family:ArnoldBoeD; color:red; font-size:24pt; text-align:center"> <xsl:apply-templates select="//rname" /> </DIV> <BR /> <HR></HR> <TABLE WIDTH="100%" CELLPADDING="5"> <xsl:apply-templates select="//item" /> </TABLE> <HR></HR> </BODY> </HTML> </xsl:template> <xsl:template match="rname"> <xsl:value-of /> </xsl:template> <xsl:template match="item"> <TR> <xsl:apply-templates select="descr" /> <xsl:apply-templates select="price" /> </TR> </xsl:template> <xsl:template match="descr"> <TD STYLE="font-family:Tahoma,Ariel,sans-serif; color:blue; font-size:16pt; font-weight:bold"> <xsl:value-of /> </TD> </xsl:template> <xsl:template match="price"> <TD STYLE="font-family:Tahoma,Ariel,sans-serif; color:black; font-size:14pt; font-weight:bold"> $<xsl:value-of /> </TD> </xsl:template> </xsl:stylesheet> DIKU.PEH.808
XML Teknologier Definitions and Structure DTD XML schema XML Data Types Data Transfer Data Store Applikation XML Display and Reporting XSL CSS Links to other resources XPL XLL HTML Resources XML DIKU.PEH.809