Uitbreidbare opmaaktaal
Uitbreidbare opmaaktaal | |
---|---|
![]() | |
Bestandsextensie : | .xml |
MIME-type : | applicatie / xml, tekst / xml |
Magisch nummer : | 3C 3F 78 6D 6C zeskant <? xml |
Ontwikkeld door: | Wereldwijde web consortium |
Type: | Opmaaktaal |
Verlengd met: | SGML |
Uitgebreid naar: | XHTML , RSS , Atom |
Website : | 1.0 (vijfde editie) 1.1 (Tweede editie) |
De Extensible Markup Language (dt. Extensible Markup Language), afgekort XML , is een opmaaktaal om hiërarchisch gestructureerde gegevens weer te geven in het formaat van een tekstbestand dat zowel door mensen als door machines leesbaar is.
XML wordt ook gebruikt voor de platform- en implementatie- onafhankelijke uitwisseling van gegevens tussen computersystemen , met name via internet , en werd op 10 februari 1998 gepubliceerd door het World Wide Web Consortium (W3C). [1] De huidige versie is de vijfde editie van 26 november 2008. [2] XML is een metataal , op basis waarvan applicatiespecifieke talen worden gedefinieerd door structurele en inhoudelijke beperkingen. Deze beperkingen worden uitgedrukt door een Document Type Definition (DTD) of door een XML-schema . Voorbeelden van XML-talen zijn: RSS , MathML , GraphML ,XHTML , XAML , Scalable Vector Graphics (SVG), GPX , maar ook het XML-schema zelf.
De standaard tekencodering van een XML-document is UTF-8 . Systemen die XML verwerken, moeten de coderingen UTF-8 en UTF-16 kunnen gebruiken . [3] XML-documenten die UTF-8 of UTF-16 gebruiken, kunnen worden bekeken en bewerkt in alle teksteditors die deze coderingen ondersteunen.
Als het XML-document binaire gegevens moet bevatten, moeten deze gegevens als tekst worden gehercodeerd. Voor dit doel z. B. Base64- codering kan worden gebruikt.
Technische termen
element
De belangrijkste structurele eenheid van een XML-document is het element . Elementen kunnen zowel tekst als andere elementen als inhoud bevatten. Elementen vormen de knooppunten van de structuurboom van een XML-document. De naam van een XML-element kan vrij worden gekozen in XML-documenten zonder Document Type Definition (DTD) . In XML-documenten met DTD moet de naam van een element in de DTD worden gedeclareerd en moet het element volgens de DTD op een toegestane positie in de structuurboom staan. In de DTD wordt onder andere de mogelijke inhoud van elk element gedefinieerd. Elementen zijn de dragers van informatie in een XML-document.
Dag
Tags worden gebruikt om elementen te markeren:
- een startdag voor het begin van een element:
<Elementname>
- een
</Elementname>
voor het einde van een element:</Elementname>
- een lege tag voor een element zonder inhoud:
<Leer/>
Goed gevormd
Een XML-document is "goed gevormd" (of Engels goed gevormd) als het voldoet aan alle regels van XML. De volgende zijn voorbeelden:
- Het document heeft precies één root-element. Het buitenste element wordt telkens het wortelelement genoemd, b.v. B.
<html>
inXHTML . - Alle elementen met inhoud hebben een begin- en een eindtag (bijv.
<eintrag>Eintrag 1</eintrag>
). Elementen zonder inhoud kunnen worden gemarkeerd met een spatie (bijv.<eintrag />
). - De begin- en eindtags zijn in paren genest. Dit betekent dat alle elementen moeten worden gesloten voordat de eindmarkeringen van het corresponderende bovenliggende element of de startmarkeringen van een broer of zus verschijnen.
- Een element kan niet meerdere attributen met dezelfde naam hebben.
- Attribuutwaarden moeten tussen aanhalingstekens staan (
"..."
of'...'
). - De begin- en eindtags zijn hoofdlettergevoelig (bijv.
<eintrag></Eintrag>
is niet geldig).
Geldigheid
Als XML moet worden gebruikt voor de gegevensuitwisseling , is het voordelig als het formaat wordt gedefinieerd door middel van een grammatica (bijvoorbeeld een documenttypedefinitie of een XML-schema ). De standaard definieert een XML-document als geldig (of Engels geldig) als het goed gevormd is, de verwijzing naar een grammatica bevat en voldoet aan het formaat dat door de grammatica wordt beschreven.
Parser
Programma's of programmaonderdelen die XML-gegevens uitlezen, interpreteren en zo nodig controleren op geldigheid worden XML- parsers genoemd . Als de parser de geldigheid controleert, is het een validerende parser.
Structuur van een XML-document
Voorbeeld van een XML-bestand
<? xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<map>
<titel> Wikipedia stadsgids </titel>
<invoer>
<keyword> Genève </keyword>
<eintragstext> Genève is de zetel van ... </eintragstext>
</entry>
<invoer>
<stichwort> Keulen </stichwort>
<eintragstext> Keulen is een stad die ... </eintragstext>
</entry>
</directory>
XML-documenten hebben een fysieke en een logische structuur.
Fysieke structuur
- De entiteit Document bevat het hoofddocument.
- Andere mogelijke entiteiten gaan over:
- Entiteitsverwijzingen (
&name;
voor het document of%name;
voor de documenttypedefinitie) ingesloten tekenreeksen, mogelijk ook hele bestanden, evenals verwijzingen naar tekenentiteiten voor de integratie van individuele tekens waarnaar wordt verwezen door hun nummer (&# Dezimalzahl ;
of&#x Hexadezimalzahl ;
).
- Entiteitsverwijzingen (
- Een XML-declaratie wordt gebruikt om de XML-versie, tekencodering en mogelijke verwerkbaarheid zonder DTD te specificeren.
- Een documenttypedefinitie wordt gebruikt om entiteiten en de toegestane logische structuur te specificeren. Het gebruik van een DTD kan worden gedeselecteerd in de XML-declaratie .
Logische structuur
De logische structuur komt overeen met een boomstructuur en is dus hiërarchisch georganiseerd. De boomknooppunten zijn:
- Elementen waarvan de fysieke identificatie is door middel van:
- een paar geschikte
< Tagname >
tag</ Tagname >
tag< Tagname >
en eind tag</ Tagname >
of - een blanco
< Tagname />
kan worden gedaan,
- een paar geschikte
- Attributen als aanvullende eigenschappen van de elementen geschreven in het geval van een startdag of lege dag in de syntaxis
Attributname =" Attributwert "
, - Verwerkingsinstructies
<? Zielname Daten?>
( Verwerkingsinstructies ), - Opmerkingen
<!-- Kommentar-Text -->
, en - Tekst die kan verschijnen als normale tekengegevens of in de vorm van een CDATA- sectie
<![CDATA[ beliebiger Text ]]>
.
Een XML-document moet precies één element op het hoogste niveau bevatten. Verdere elementen en tekst kunnen onder dit documentelement worden genest.
DTD
Een documenttypedefinitie (DTD) beschrijft de structuur en grammatica van documenten. Het maakt deel uit van het XML-systeem en is standaard geactiveerd.
Als documenten worden aangemaakt met verwijzing naar een externe documenttypedefinitie of met een geïntegreerde documenttypedefinitie, controleert de parser het document zodra het wordt geopend (gelezen). Een document op basis van een documenttypedefinitie is altijd een geldig document. De focus ligt op de conformiteit van de documentinhoud met de regels van de documenttypedefinitie. Technische leesbaarheid, waaronder het lezen van ongeldige documenten, is van ondergeschikt belang. Dit is bedoeld voor full-text documenten ( narratieve documenten ) en is het hoofddoel.
Documenten zonder DTD zijn meer geschikt voor elke gegevensuitwisseling. De parser controleert deze documenten alleen volgens de regels van welgevormdheid. Technische leesbaarheid staat hierbij voorop. De feitelijke informatie wordt gecontroleerd en uitgelezen met behulp van stroomafwaartse processen.
Leesbaarheid van XML-documenten
Vrijwel alle webbrowsers zoals Apple Safari , Google Chrome , Microsoft Internet Explorer , Mozilla Firefox en Opera kunnen XML-documenten direct visualiseren met behulp van de ingebouwde XML- parser .
Classificatie van XML-documenten
XML-documenten kunnen worden onderverdeeld in documentgerichte en gegevensgerichte documenten op basis van het beoogde gebruik en de mate van structuur. De grens tussen dit soort documenten is echter vloeiend. Gemengde vormen kunnen worden omschreven als semi- gestructureerd.
- documentgericht: het document is gebaseerd op een tekstdocument dat grotendeels begrijpelijk is voor de menselijke lezer, zelfs zonder de aanvullende meta-informatie. XML-elementen worden voornamelijk gebruikt voor de semantische markering van passages in het document, het document is alleen slecht gestructureerd. Machinale verwerking is moeilijk vanwege de zwakke structuur.
- datacentrisch: het document is primair bedoeld voor machinale verwerking. Het volgt een schema dat de entiteiten van een gegevensmodel beschrijft en de relatie tussen de entiteiten en de attributen van de entiteiten definieert. Het document is dus sterk gestructureerd en minder geschikt voor direct menselijk gebruik.
- semi-gestructureerd: Semi-gestructureerde documenten vertegenwoordigen een soort hybride vorm die meer gestructureerd is dan document-gecentreerde documenten, maar zwakker dan data-gecentreerde documenten.
Het is typerend voor gegevensgerichte XML-documenten dat elementen ofwel elementinhoud ofwel tekstinhoud hebben. Typerend voor de andere XML-documenten is de zogenaamde mixed content, waarin elementen zowel tekst als onderliggende elementen bevatten.
Verwerking van XML
Verwerkingscriteria
In principe zijn drie aspecten van belang bij het benaderen van een XML-document:
- Hoe wordt het XML-bestand geopend: sequentieel of willekeurig?
- Hoe is het proces voor toegang tot de XML-gegevens ontworpen: "Push" of "Pull"? (Push betekent dat de parser de stroom van het programma bestuurt. Pull betekent dat de controle van de stroom wordt geïmplementeerd in de code die de parser aanroept.)
- Hoe verloopt het boomstructuurbeheer van de XML-gegevens: hiërarchisch of genest?
Programmatische toegang tot XML-documenten
XML-documenten worden op het laagste niveau ingelezen met een speciaal programmaonderdeel, een XML-processor , ook wel XML-parser genoemd. Het biedt een programmeerinterface (API) waarmee de toepassing toegang krijgt tot het XML-document.
De XML-processors ondersteunen drie basisverwerkingsmodellen.
- DOM : Een DOM-API vertegenwoordigt een XML-document als een boomstructuur en geeft willekeurige toegang tot de afzonderlijke componenten van de boomstructuur. Naast het lezen van XML-documenten, maakt DOM het ook mogelijk om de boomstructuur te manipuleren en de boomstructuur terug te schrijven naar een XML-document. Hierdoor is DOM erg geheugenintensief.
- SAX : Een SAX API vertegenwoordigt een XML-document als een sequentiële datastroom en roept de callback-functies aan die zijn gespecificeerd in de standaard voor gebeurtenissen. Een applicatie die SAX gebruikt, kan zijn eigen subroutines als callback-functies registreren en op deze manier de XML-gegevens evalueren.
- Pull-API : een XML-pull-API verwerkt gegevens sequentieel en biedt zowel op gebeurtenissen gebaseerde verwerking als een iterator . Het is zeer geheugenefficiënt en, indien nodig, gemakkelijker te programmeren dan de SAX-API, aangezien de procesbesturing bij het programma ligt en niet bij de parser.
Verdere verwerkingsmodellen:
- Gegevensbinding : Deze optie biedt XML-gegevens als een gegevensstructuur direct voor programmatoegang. De XML-gegevens worden direct in z gedemarshalld . B. Geconverteerde objecten.
- Niet-extraherende XML API : De gegevens worden zeer efficiënt verwerkt op byteniveau.
Vaak heeft de toepassingscode geen rechtstreekse toegang tot de parser-API. In plaats daarvan wordt XML verder ingekapseld zodat de applicatiecode werkt met native objecten / datastructuren die op XML zijn gebaseerd. Voorbeelden van dergelijke toegangslagen zijn JAXB in Java , de Data Binding Wizard in Delphi of de XML Schema Definition Toolkit in .Net . De conversie van objecten naar XML is meestal bidirectioneel. Deze conversie staat bekend als serialisatie of marshaling .
XML-parser-API-voorbeelden
XML-parser-API's zijn beschikbaar voor verschillende programmeertalen, b.v. B. Java , C , C++ , C# , Python , Perl en PHP . Parser-API-voorbeelden:
- XML :: Parser ( Perl ): Een XML-parser voor Perl. Een zeer eenvoudige API biedt b.v. B. ook de CPAN module XML :: Simpel.
- DOM Functions (PHP5): Module in PHP5 om XML-documenten te lezen; alternatief simpleXML; voor PHP4 is er DOM XML.
- StAX (Java) : Een zeer geheugen-efficiënte parser-implementatie (pull) en tegelijkertijd eenvoudig te programmeren. Cursor- en iteratorverwerkingsmodellen worden aangeboden.
- JAXB : gegevensbinding voor Java. De bijbehorende Java-klasse kan bijvoorbeeld worden gegenereerd vanuit een XML-schema en vice versa.
- Apache XMLBeans Java Data Binding Framework, kan al worden gebruikt met Java 1.4.2
- Xerces : Een validerende XML-parser voor C++, Java en Perl voor een breed scala aan platforms.
- ElementTree iterparse : Een parser-API voor Python die zich herhaalt over substructuren. Het combineert de opslagefficiëntie van een pull-parser met de eenvoud van een DOM-parser.
- VTD-XML : Voorbeeld van een niet-uitpakkende XML-API.
- MSXML : Microsoft XML Core Services, de Microsoft XML-softwarebibliotheek voor XML-ondersteuning via DOM, SAX, XSLT, XML-schema's en andere XML-gerelateerde technologieën
- Pugixml : Een DOM XML-parser voor C++ waarvan de ontwikkeling bijzondere nadruk legde op efficiënte code.
Er zijn speciale programma's, zogenaamde XML-editors, voor het maken van XML-documenten. Er zijn ook speciale programma's, zogenaamde XML-databases, voor het opslaan en beheren van XML-documenten.
Transformatie en weergave van XML-documenten
Een XML-document kan worden omgezet in een ander document met behulp van geschikte transformatietalen zoals XSLT of DSSSL . De transformatie wordt vaak gebruikt om een document over te zetten van de ene XML-taal naar een andere XML-taal, bijvoorbeeld om het om te zetten naar XHTML, om het document in een webbrowser weer te geven.
Schematalen
Zogenaamde schematalen worden gebruikt om de structuur van XML- talen te beschrijven .
XML-schema / XSD
XML-schema (of XSD voor XML-schemadefinitie) is de moderne manier om de structuur van XML-documenten te beschrijven. XML Schema biedt ook de mogelijkheid om de inhoud van elementen en attributen te beperken, b.v. B. op nummers, data of teksten, b.v. B. het gebruik van reguliere expressies . Een schema is zelf een XML-document waarmee complexere (inclusief inhoudelijke) relaties kunnen worden beschreven dan mogelijk is met een formele DTD.
Meer schematalen
Verdere schema talen zijn Document Structure Beschrijving , RELAX NG en Schematron .
XML-familie
Infrastructuur
In verband met XML heeft het W3-consortium op basis van XML vele talen gedefinieerd, die XML-uitdrukkingen bieden voor veel voorkomende algemene functies zoals het koppelen van XML-documenten. Talloze XML-talen gebruiken deze basisbouwstenen.
- Transformatie van XML-documenten: XSLT , STX
- Gedeelten van een XML-structuur adresseren: XPath
- XML-bronnen koppelen: XPointer , XLink en XInclude
- Selectie van gegevens uit een XML-gegevensrecord: XQuery
- Gegevensmanipulatie in een XML-gegevensrecord: XUpdate
- Elektronische formulieren opstellen: XForms
- Definitie van XML-gegevensstructuren: XML Schema (= XSD, XML Schema Definition Language), DTD en RELAX NG
- Handtekening en codering van XML-knooppunten: XML-handtekening en XML-codering
- Verklaringen over de formele informatie- inhoud : XML Infoset
- Geformatteerde weergave van XML-gegevens: XSL-FO
- Definitie van de methode- of functieaanroep door gedistribueerde systemen: XML-RPC
- Gestandaardiseerde attributen: XML Base en ID (DTD)
- Op XML gebaseerde declaratieve programmeertaal: MXML
talen
Tegenwoordig gebruiken veel formele talen de syntaxis van XML. XML is een essentieel instrument om een open informatielandschap ( semantisch web ) te creëren dat begrijpelijk is voor mens en machine - zoals bedoeld door het W3C.
De bekende documenttaal HTML werd in dit concept ook geïntegreerd als "Extensible HyperText Markup Language" (XHTML ) na versie 4.01, zodat het nu gebaseerd is op XML als basis voor definitie. Een veel voorkomende reden voor het gebruik van XML is de talrijke aanwezigheid van parsers en de eenvoudige syntaxis: de definitie van SGML omvat 500 pagina's, die van XML slechts 26.
De volgende lijsten vertegenwoordigen enkele van deze XML-talen.
tekst
- XSL-FO (tekstopmaak)
- DocBook
- DITA
- XHTML (XML-compatibele HTML)
- TEI (Text Encoding Initiative)
- NITF ( tekstindeling voor nieuwsindustrie )
- OPML (Outline Processor Markup Language)
- OSIS (Open Schrift Informatie Standaard)
grafisch
- SVG (vectorafbeeldingen)
- X3D (3D-modelleertaal)
- Collada (uitwisselingsformaat voor gegevens tussen verschillende 3D-programma's)
Geospatiale gegevens
- Geografie Markup Language (GML)
- GPS-uitwisselingsformaat (GPX): XML voor GPS- gegevens
- Keyhole Markup Language (KML): Coördinatenspecificatie voor Google Earth
- City Geography Markup Language (CityGML)
- OpenStreetMap (OSM)
- Op standaarden gebaseerde uitwisselingsinterface (NAS)
multimedia
- MEI (Music Encoding Initiative)
- MusicXML (bladmuziekgegevens, opgenomen muziek)
- SMIL (tijdgesynchroniseerd, multimedia-inhoud)
- MPEG-7 (MPEG-7-metagegevens)
- Laszló (LZX)
veiligheid
- Security Assertion Markup Language (beschrijf en verzend beveiligingsgerelateerde informatie)
- XML-handtekening (XML-notatie voor digitale handtekeningen )
- XML-codering
Engineering
- AutomationML , een formaat voor het opslaan van systeemplanningsgegevens
- CAEX , een formaat voor het opslaan van hiërarchische objectinformatie
- GSDML, een formaat voor het beschrijven van automatiseringsapparaten die kunnen communiceren met Profinet
- IODD , een formaat voor het beschrijven van sensoren en actuatoren
- PLMXML, een formaat voor het beschrijven van productgegevens als onderdeel van de Siemens PLM-software [4]
- LandXML, een indeling voor het opslaan van objecten met georeferentie
- RTML (Remote Telescope Markup Language), een formaat voor het beschrijven van verzoeken om astronomische observaties [5]
Verder
Daarnaast zijn er XML-talen voor webservices (o.a. SOAP , WSDL en WS-* ), voor de integratie van Java- code in XML-documenten ( XSP ), voor de synchronisatie van kalendergegevens SyncML , wiskundige formules ( MathML ), Weergave van grafieken ( GraphML ), procedures op het gebied van het semantisch web ( RDF , OWL , Topic Maps , UOML ), dienstverlening ( SPML ), het uitwisselen van berichten ( XMPP ) of financiële rapportages zoals jaarrekeningen ( XBRL ) in gebieden automobielindustrie ( ODX , MSRSW , AUTOSAR sjablonen, QDX , JADM , OTX ), geautomatiseerde test b.v. B. van circuits ( ATML ) tot systeembiologie ( SBML ) en landbouw ( AgroXML ) tot uitgeverij ( ONIX ) of chemie (CIDX) en nog veel meer.
Een overzicht van XML-talen voor Office-applicaties is te vinden in het OpenDocument- uitwisselingsformaat ( OASIS Open Document Format for Office-applicaties ).
Alternatieve formaten
Trivia
Linus Torvalds beschreef XML als ongeschikt als opmaaktaal [6] (Commentaar nr. 19):
“XML is onzin. Echt. Er zijn geen excuses. XML is voor mensen vervelend om te ontleden, en zelfs voor computers is het een ramp om te ontleden. Er is gewoon geen reden voor die vreselijke onzin om te bestaan."
literatuur
- Charles F. Goldfarb, Paul Prescod: XML-handboek . Markt und Technik, München [ua] 1999, ISBN 3-8272-9575-0 .
- Wiebke Möhr, Ingrid Schmidt: SGML en XML: toepassingen en perspectieven . Springer-Verlag, Berlijn / Heidelberg / New York [et al.] 1999, ISBN 3-540-65543-3 .
- Robert Eckstein: XML - kort en goed . O'Reilly Verlag, Cambridge / Keulen [et al.] 2000, ISBN 3-89721-219-6 .
- Henning Lobin: Informatiemodellering in XML en SGML . Springer, Berlijn 2000, ISBN 3-540-65356-2 .
- Michael Seeboerger-Weichselbaum: Het beginnersseminar XML . 2e, herziene druk. BHV Software, Kaarst 2000, ISBN 3-8287-1018-2 .
- Elliotte Rusty Harold: De XML-bijbel . 2e bijgewerkte editie. mitp, Bonn 2002, ISBN 3-8266-0821-6 .
- Stefan Mintert: XML & Co. De W3C-specificaties voor document- en data-architectuur . Addison-Wesley, München 2002, ISBN 3-8273-1844-0 .
- Christine Kränzler: XML / XSL -… voor professionele beginners. voor boek en internet . Markt + Technik, München 2002, ISBN 3-8272-6339-5 .
- Frank Bitzer: XML in het bedrijf. Briefing voor IT-beheer . Galileo Press, Bonn 2002, ISBN 3-89842-288-7 .
- Erik T. Ray: Inleiding tot XML . O'Reilly, 2004, ISBN 3-89721-286-2 .
- Margit Becher: XML: DTD, XML-schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM . W3L Verlag, Witten 2009, ISBN 978-3-937137-69-8 .
- Marco Skulschus, Marcus Wiederstein: XML: standaarden en technologieën . Comelio Medien, Berlijn 2009, ISBN 978-3-939701-21-7 .
- Helmut Vonhoegen: Aan de slag met XML. Huidige standaarden: XML Schema, XSL, XLink . 8e editie. Rheinwerk, 2015, ISBN 978-3-8362-3798-7 .
web links
- World Wide Web Consortium via XML (Engels),
edition-w3c.de - Duitse vertalingen voor XML en anderen - Gedetailleerde uitleg van XML en tutorials voor verschillende XML-talen
- XML FAQ (veelgestelde vragen) - in het Engels (momenteel is er geen Duitse vertaling)
- Link catalogus over het onderwerp XML op curlie.org (voorheen DMOZ )
- Informatie over verschillende XML-technologieën zoals XSLT, XPath, Schematron, XProc, WordML, XSL-FO
- XML-parser
Individueel bewijs
- ↑ Extensible Markup Language (XML) 1.0. w3.org, 10 februari 1998, gearchiveerd van het origineel op 15 juni 2006 ; geopend op 12 februari 2017 .
- ↑ Extensible Markup Language (XML) 1.0 (vijfde editie). w3.org, 26 november 2008, geraadpleegd op 12 februari 2017 .
- ↑ Characters. In: Extensible Markup Language (XML) 1.0 (Fifth Edition). 26. November 2008, abgerufen am 9. März 2019 (englisch).
- ↑ plm.automation.siemens.com
- ↑ Remote Telescope Markup Language (RTML), bibcode : 2006AN....327..751H
- ↑ Kommentar in Diskussion um XML als Markup-Sprache (06.03.2014) . ( plus.google.com [abgerufen am 10. April 2017]).