XML -
XML

Från Wikipedia, den fria encyklopedin
XML (standard)
Utökningsbart markeringsspråk
Extensible Markup Language (XML) logo.svg
Status Publicerad, W3C rekommendation
År började 1996
; 25 år sedan
 (
1996
)
Först publicerad
Senaste versionen 1.1 (andra upplagan)
29 september 2006
; 15 år sedan
 (
2006-09-29
)
Organisation World Wide Web Consortium (W3C)
Redaktörer
Grundstandarder SGML
Relaterade standarder XML -schema
Domän Dataserialisering
Förkortning XML
Hemsida
Filnamnstillägg
.xml
Internetmedietyp
  • application/xml
  • text/xml
Uniform Type Identifier (UTI) public.xml
UTI -konformation public.text
Magiskt nummer <?xml
Utvecklad av
Typ av format Markeringsspråk
Förlängd från SGML
Förlängd till
Standard
Ja

Extensible Markup Language ( XML ) är ett markeringsspråk som definierar en uppsättning regler för kodning av dokument i ett format som är både läsbart och maskinläsbart . Den World Wide Web Consortium : s XML 1.0-specifikationen 1998 och flera andra relaterade specifikationer, alla dem fria öppna standarder -Definiera XML.

Designmålen för XML betonar enkelhet, allmänhet och användbarhet på Internet . Det är ett textdataformat med starkt stöd via Unicode för olika mänskliga språk . Även om utformningen av XML fokuserar på dokument, används språket i stor utsträckning för representation av godtyckliga datastrukturer som de som används i webbtjänster .

Flera schemasystem finns för att hjälpa till med definitionen av XML-baserade språk, medan programmerare har utvecklat många applikationsprogrammeringsgränssnitt (API: er) för att underlätta bearbetningen av XML-data.

Ansökningar

Kärnan i varför utökningsbara markeringsspråk är nödvändiga förklaras på markeringsspråk (se till exempel markeringsspråk § XML ) och Standard Generalized Markup Language .

Hundratals dokumentformat med XML -syntax har utvecklats, inklusive RSS , Atom , SOAP , SVG och XHTML . XML-baserade format har blivit standard för många kontorsproduktivitetsverktyg, inklusive Microsoft Office ( Office Open XML ), OpenOffice.org och Libreoffice ( Opendocument ) och Apple är iWork . XML har också tillhandahållit grundspråket för kommunikationsprotokoll som XMPP . Program för Microsoft .NET Framework använder XML -filer för konfiguration, och egenskapslistor är en implementering av konfigurationslagring som bygger på XML.

Många industristandardstandarder, såsom Health Level 7 , OpenTravel Alliance , FpML , MISMO och National Information Exchange Model är baserade på XML och de rika funktionerna i XML -schemaspecifikationen. Många av dessa standarder är ganska komplexa och det är inte ovanligt att en specifikation omfattar flera tusen sidor. Vid publicering är Darwin Information Typing Architecture en XML -industristandardstandard. XML används i stor utsträckning för att stödja olika publiceringsformat.

XML används ofta i en Service-orienterad arkitektur (SOA). Olika system kommunicerar med varandra genom att utbyta XML -meddelanden. Meddelandeutbytesformatet är standardiserat som ett XML -schema (XSD). Detta kallas också det kanoniska schemat. XML har kommit till vanlig användning för utbyte av data över Internet. IETF RFC: 3023 , nu ersatt av RFC: 7303 , gav regler för konstruktion av Internet Media Typer för användning vid sändning av XML. Det definierar också medietyper application/xmloch text/xml, som bara säger att data finns i XML, och ingenting om dess semantik .

RFC 7303 rekommenderar också att XML-baserade språk ges medietyper som slutar på +xml; till exempel image/svg+xmlför SVG . Ytterligare riktlinjer för användningen av XML i ett nätverkssammanhang finns i RFC 3470, även känt som IETF BCP 70, ett dokument som täcker många aspekter av att utforma och distribuera ett XML-baserat språk.

Nyckelterminologi

Materialet i detta avsnitt är baserat på XML -specifikationen. Detta är inte en uttömmande lista över alla konstruktioner som visas i XML; den ger en introduktion till de nyckelkonstruktioner som oftast förekommer vid daglig användning.

Karaktär

Ett XML -dokument är en teckensträng . Nästan alla juridiska Unicode -tecken kan visas i ett XML -dokument.

Processor och applikation

Den Processorn analyserar uppmärkning och passerar strukturerad information till en applikation . Specifikationen ställer krav på vad en XML -processor måste göra och inte göra, men applikationen ligger utanför dess omfattning. Processorn (som specifikationen kallar det) kallas ofta i allmänhet som en XML -parser .

Markering och innehåll

Tecknen som utgör ett XML -dokument är indelade i uppmärkning och innehåll , vilket kan särskiljas genom tillämpningen av enkla syntaktiska regler. Generellt börjar strängar som utgör markering antingen med tecknet <och slutar med a >, eller så börjar de med tecknet &och slutar med a ;. Teckensträngar som inte är markup är innehåll. Men i en CDATA -sektion klassificeras avgränsarna <![CDATA[och ]]>som uppmärkning, medan texten mellan dem klassificeras som innehåll. Dessutom klassificeras blanksteg före och efter det yttersta elementet som markering.

Märka

En tagg är en markupkonstruktion som börjar med <och slutar med >. Det finns tre typer av taggar:
  • start-tagg , till exempel <section>;
  • slutmärke , såsom </section>;
  • tomelementstagg , såsom <line-break />.

Element

Ett element är en logisk dokumentkomponent som antingen börjar med en start-tagg och slutar med en matchande slut-tagg eller bara består av en tom-element-tagg. Tecknen mellan starttaggen och sluttaggen, om sådana finns, är elementets innehåll och kan innehålla uppmärkning, inklusive andra element, som kallas underordnade element . Ett exempel är <greeting>Hello, world!</greeting>. En annan är <line-break />.

Attribut

Ett attribut är en markup-konstruktion som består av ett namn-värde-par som finns i en start-tagg eller tom-element-tagg. Ett exempel är <img src="madonna.jpg" alt="Madonna" />, där namnen på attributen är "src" och "alt", och deras värden är "madonna.jpg" respektive "Madonna". Ett annat exempel är <step number="3">Connect A to B.</step>, där namnet på attributet är "nummer" och dess värde är "3". Ett XML -attribut kan bara ha ett enda värde och varje attribut kan visas högst en gång på varje element. I den vanliga situationen där en lista med flera värden önskas måste detta göras genom att koda listan till ett välformat XML-attribut med något format utöver vad XML definierar sig själv. Vanligtvis är detta antingen en komma- eller semikolonavgränsad lista eller, om det är känt att de enskilda värdena inte innehåller mellanslag, kan en mellanseparerad lista användas. <div class="inner greeting-box">Welcome!</div>, där attributet "class" har både värdet "inner greeting-box" och också anger de två CSS- klassnamnen "inner" och "greeting-box".

XML -deklaration

XML -dokument kan börja med en XML -deklaration som beskriver viss information om sig själva. Ett exempel är <?xml version="1.0" encoding="UTF-8"?>.

Karaktärer och flyr

XML -dokument består helt av tecken från Unicode -repertoaren. Med undantag för ett litet antal specifikt uteslutna kontrolltecken kan alla tecken som definieras av Unicode visas i innehållet i ett XML -dokument.

XML innehåller funktioner för att identifiera kodningen av Unicode -tecknen som utgör dokumentet och för att uttrycka tecken som av en eller annan anledning inte kan användas direkt.

Giltiga tecken

Unicode -kodpunkter i följande intervall är giltiga i XML 1.0 -dokument:

  • U+0009 (Horisontell flik), U+000A (radmatning), U+000D (vagnretur): dessa är de enda C0 -kontrollerna som accepteras i XML 1.0;
  • U+0020 – U+D7FF, U+E000 – U+FFFD: detta utesluter vissa icke-tecken i BMP (alla surrogater, U+FFFE och U+FFFF är förbjudna);
  • U+10000 – U+10FFFF: detta inkluderar alla kodpunkter i kompletterande plan, inklusive icke-tecken.

XML 1.1 utökar uppsättningen tillåtna tecken till att inkludera allt ovan, plus de återstående tecknen i intervallet U+0001 – U+001F. Samtidigt begränsar det dock användningen av andra C0- och C1 -kontrolltecken än U+0009 (Horizontal Tab), U+000A (Line Feed), U+000D (Carriage Return) och U+0085 (Next Line) ) genom att kräva att de skrivs i undviken form (till exempel måste U+0001 skrivas som &#x01;eller motsvarande). När det gäller C1 -tecken är denna begränsning en bakåtkompatibilitet; den introducerades för att tillåta vanliga kodningsfel att upptäckas.

Kodpunkten U+0000 (Null) är det enda tecknet som inte är tillåtet i något XML 1.0- eller 1.1 -dokument.

Kodningsdetektering

Unicode -teckenuppsättningen kan kodas till byte för lagring eller överföring på en mängd olika sätt, kallade "kodningar". Unicode definierar själva kodningar som täcker hela repertoaren; välkända inkluderar UTF-8 och UTF-16 . Det finns många andra textkodningar som föregår Unicode, till exempel ASCII och ISO/IEC 8859 ; deras karaktärsrepertoar är i nästan alla fall delmängder av Unicode -teckenuppsättningen.

XML tillåter användning av alla Unicode-definierade kodningar och alla andra kodningar vars tecken också visas i Unicode. XML tillhandahåller också en mekanism där en XML -processor på ett tillförlitligt sätt utan någon förkunskap kan avgöra vilken kodning som används. Andra kodningar än UTF-8 och UTF-16 känns inte nödvändigtvis igen av varje XML-parser.

Flyr

XML ger utrymningsfunktioner för att inkludera tecken som är problematiska att inkludera direkt. Till exempel:

  • Tecknen "<" och "&" är viktiga syntaxmarkörer och får aldrig visas i innehåll utanför en CDATA -sektion. Det är tillåtet, men rekommenderas inte, att använda "<" i XML -enhetsvärden.
  • Vissa teckenkodningar stöder endast en delmängd av Unicode. Till exempel är det lagligt att koda ett XML -dokument i ASCII, men ASCII saknar kodpunkter för Unicode -tecken som "é".
  • Det är kanske inte möjligt att skriva tecknet på författarens maskin.
  • Vissa tecken har glyfer som inte kan skiljas visuellt från andra tecken, till exempel det icke-brytande mellanslag ( &#xa0;) "" och mellanslag ( &#x20;) "", och den kyrilliska versalen A ( &#x410;) "А" och den latinska versalen A ( &#x41;) "A".

Det finns fem fördefinierade enheter :

  • &lt; representerar "<";
  • &gt; representerar ">";
  • &amp; representerar "&";
  • &apos;representerar "
    '
    ";
  • &quot;representerar "
    "
    ".

Alla tillåtna Unicode -tecken kan representeras med en numerisk teckenreferens . Tänk på det kinesiska tecknet "中", vars numeriska kod i Unicode är hexadecimal 4E2D, eller decimal 20,013. En användare vars tangentbord inte erbjuder någon metod för att ange detta tecken kan fortfarande infoga det i ett XML -dokument som är kodat antingen som &#20013;eller &#x4e2d;. På samma sätt kan strängen "I <3 Jörg" kodas för inkludering i ett XML -dokument som I &lt;3 J&#xF6;rg.

&#0;är dock inte tillåtet eftersom nulltecknet är ett av kontrolltecknen som utesluts från XML, även när man använder en numerisk teckenreferens. En alternativ kodningsmekanism som Base64 behövs för att representera sådana tecken.

Kommentarer

Kommentarer kan visas var som helst i ett dokument utanför annan markering. Kommentarer kan inte visas före XML -deklarationen. Kommentarer börjar med <!--och slutar med -->. För kompatibilitet med SGML är strängen "-" (dubbel bindestreck) inte tillåten inuti kommentarer; det betyder att kommentarer inte kan häckas. Ampersanden har ingen särskild betydelse inom kommentarer, så entitets- och teckenreferenser känns inte igen som sådana, och det finns inget sätt att representera tecken utanför teckenuppsättningen i dokumentkodningen.

Ett exempel på en giltig kommentar: <!--no need to escape <code> & such in comments-->

Internationell användning

Detta exempel innehåller armenisk text. Utan korrekt återgivningsstöd kan du se frågetecken, rutor eller andra symboler istället för armeniska bokstäver.

XML 1.0 (femte upplagan) och XML 1.1 stöder direkt användning av nästan alla Unicode -tecken i elementnamn, attribut, kommentarer, teckendata och bearbetningsinstruktioner (andra än de som har särskild symbolisk betydelse i XML själv, till exempel de mindre -tecken, "<"). Följande är ett välformat XML-dokument som innehåller kinesiska , armeniska och kyrilliska tecken:

<?xml version="1.0" encoding="UTF-8"?>
<俄语
լեզու=
"ռուսերեն"
>
данные
</俄语>

Syntaktisk korrekthet och felhantering

XML-specifikationen definierar ett XML-dokument som en välformad text, vilket innebär att den uppfyller en lista med syntaxregler som finns i specifikationen. Några viktiga punkter i den ganska långa listan inkluderar:

  • Dokumentet innehåller endast korrekt kodade juridiska Unicode -tecken.
  • Inget av de speciella syntaxtecknen som <och &visas förutom när de utför sina uppmärkning-avgränsningsroller.
  • Starttaggen, sluttaggen och den tomma elementtaggen som avgränsar element är korrekt kapslade, ingen saknas och ingen överlappar.
  • Taggnamn är skiftlägeskänsliga; start-taggen och slut-taggen måste matcha exakt.
  • Taggnamn får inte innehålla några av tecknen! "#$%& '()*+,/; <=>?@[\]^` {|} ~, Inte heller ett mellanslagstecken, och kan inte börja med "-", ".", eller en numerisk siffra.
  • Ett enda rotelement innehåller alla andra element.

Definitionen av ett XML-dokument utesluter texter som innehåller brott mot regler om välformulering; de är helt enkelt inte XML. En XML -processor som stöter på en sådan kränkning krävs för att rapportera sådana fel och avbryta normal behandling. Denna policy, som ibland kallas " drakonisk felhantering", står i anmärkningsvärd kontrast till beteendet hos program som behandlar HTML , som är utformade för att ge ett rimligt resultat även i närvaro av allvarliga markeringsfel. XML: s politik på detta område har kritiserats som ett brott mot Postels lag ("Var konservativ i det du skickar; var liberal i vad du accepterar").

XML-specifikationen definierar ett giltigt XML-dokument som ett välformat XML-dokument som också överensstämmer med reglerna för en Document Type Definition (DTD).

Scheman och validering

Förutom att det är välformat kan ett XML-dokument vara giltigt . Detta innebär att den innehåller en referens till en Document Type Definition (DTD), och att dess element och attribut deklareras i den DTD och följer de grammatiska regler för dem som DTD anger.

XML-processorer klassificeras som validerande eller icke-validerande beroende på om de kontrollerar XML-dokumentens giltighet eller inte. En processor som upptäcker ett giltighetsfel måste kunna rapportera det, men kan fortsätta med normal behandling.

En DTD är ett exempel på ett schema eller en grammatik . Sedan den första publiceringen av XML 1.0 har det gjorts ett omfattande arbete inom schemaspråk för XML. Sådana schemaspråk begränsar vanligtvis uppsättningen element som kan användas i ett dokument, vilka attribut som kan tillämpas på dem, i vilken ordning de kan visas och tillåtna föräldrar/barnrelationer.

Definition av dokumenttyp

(DTD), ärvt från SGML.

DTD har följande fördelar:

  • DTD -stöd är allestädes närvarande på grund av att det ingår i XML 1.0 -standarden.
  • DTD: er är tätare jämfört med elementbaserade schemaspråk och presenterar följaktligen mer information på en enda skärm.
  • DTD: er tillåter deklaration av offentliga standarduppsättningar för publicering av tecken.
  • DTD definierar en dokumenttyp snarare än de typer som används av ett namnområde, och grupperar därmed alla begränsningar för ett dokument i en enda samling.

DTD har följande begränsningar:

  • De har inget uttryckligt stöd för nyare funktioner i XML, framför allt namnområden .
  • De saknar uttrycksfullhet. XML DTD är enklare än SGML DTD och det finns vissa strukturer som inte kan uttryckas med vanliga grammatiker. DTD stöder endast rudimentära datatyper.
  • De saknar läsbarhet. DTD -konstruktörer använder vanligtvis parameterentiteter (som i huvudsak beter sig som textmakron ), vilket gör det lättare att definiera komplexa grammatiker, men på bekostnad av tydlighet.
  • De använder en syntax baserad på syntax för reguljärt uttryck , ärvt från SGML, för att beskriva schemat. Typiska XML-API: er som SAX försöker inte erbjuda applikationer en strukturerad representation av syntaxen, så den är mindre tillgänglig för programmerare än vad en elementbaserad syntax kan vara.

Två särdrag som skiljer DTD från andra schematyper är det syntaktiska stödet för att bädda in en DTD i XML -dokument och för att definiera enheter , som är godtyckliga text- eller markeringsfragment som XML -processorn infogar i själva DTD: n och i XML -dokumentet varhelst de refereras, som karaktärsflykter.

DTD -teknik används fortfarande i många applikationer på grund av dess utbredning.

Schema

Ett nyare schemaspråk, som beskrivs av W3C som efterträdare till DTD: er, är XML Schema , som ofta refereras till av initialismen för XML Schema -instanser, XSD (XML Schema Definition). XSD: er är mycket kraftfullare än DTD: er för att beskriva XML -språk. De använder ett rikt datatypsystem och möjliggör mer detaljerade begränsningar för ett XML -dokuments logiska struktur. XSD använder också ett XML-baserat format, vilket gör det möjligt att använda vanliga XML-verktyg för att bearbeta dem.

xs: schema -element som definierar ett schema:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema
xmlns:xs=
"http://www.w3.org/2001/XMLSchema"
></xs:schema>

SLAPPA NG

RELAX NG (Regular Language for XML Next Generation) specificerades ursprungligen av OASIS och är nu en standard (del 2: Regelbunden grammatikbaserad validering av ISO/IEC 19757-DSDL ). RELAX NG-scheman kan skrivas antingen i en XML-baserad syntax eller en mer kompakt icke-XML-syntax; de två syntaxerna är isomorfa och James Clarks konverteringsverktyg - Trang - kan konvertera mellan dem utan förlust av information. RELAX NG har en enklare definition och valideringsram än XML -schema, vilket gör det enklare att använda och implementera. Den har också förmågan att använda Datatyp ram plug-ins ; en RELAX NG schema författare, till exempel, kan kräva värden i ett XML -dokument för att överensstämma med definitioner i XML Schema Datatyper.

Schematron

Schematron är ett språk för påståenden om förekomst eller frånvaro av mönster i ett XML -dokument. Det använder vanligtvis XPath -uttryck. Schematron är nu en standard (del 3: regelbaserad validering av ISO/IEC 19757-DSDL ).

DSDL och andra schemaspråk

DSDL (Document Schema Definition Languages) är en flerdelad ISO/IEC-standard (ISO/IEC 19757) som sammanför en omfattande uppsättning små schemaspråk, var och en riktad mot specifika problem. DSDL inkluderar RELAX NG full och kompakt syntax, Schematron- påståendespråk och språk för att definiera datatyper, teckenrepertoarbegränsningar, namnbyte och enhetsutvidgning och namnrymdsbaserad routing av dokumentfragment till olika validatorer. DSDL -schemaspråk har inte leverantörsstöd för XML -scheman än och är till viss del en gräsrotsreaktion från industriella utgivare till bristen på användbarhet av XML -scheman för publicering .

och tillskriva standardvärden. RELAX NG och Schematron tillhandahåller inte avsiktligt dessa.

Ett kluster av specifikationer som är nära besläktade med XML har utvecklats, som börjar strax efter den första publiceringen av XML 1.0. Det är ofta så att termen "XML" används för att hänvisa till XML tillsammans med en eller flera av dessa andra tekniker som kommit att ses som en del av XML -kärnan.

  • XML -namnutrymmen gör det möjligt för samma dokument att innehålla XML -element och attribut hämtade från olika ordförråd, utan att några namnkollisioner uppstår. Även om XML -namnområden inte är en del av själva XML -specifikationen, stöder praktiskt taget all XML -programvara också XML -namnområden.
  • XML Base definierar xml:baseattributet, som kan användas för att ställa in basen för upplösning av relativa URI -referenser inom ramen för ett enda XML -element.
  • XML Information Set eller XML Infoset är en abstrakt datamodell för XML -dokument när det gäller informationsobjekt . Infoset används vanligtvis i specifikationerna för XML -språk, för enkelhets skull när det gäller att beskriva begränsningar för XML -konstruktionerna som dessa språk tillåter.
  • XSL (Extensible Stylesheet Language) är en språkfamilj som används för att transformera och återge XML -dokument, uppdelade i tre delar:
  • XSLT (XSL Transformations), ett XML-språk för att omvandla XML-dokument till andra XML-dokument eller andra format som HTML, ren text eller XSL-FO. XSLT är mycket tätt kopplat till XPath, som den använder för att ta itu med komponenter i inmatat XML -dokument, främst element och attribut.
  • XSL-FO (XSL-formateringsobjekt), ett XML-språk för återgivning av XML-dokument, som ofta används för att generera PDF-filer.
  • XPath (XML Path Language), ett språk som inte är XML för adressering av komponenter (element, attribut och så vidare) i ett XML-dokument. XPath används ofta i andra kärn-XML-specifikationer och i programmeringsbibliotek för åtkomst till XML-kodad data.
  • XQuery (XML Query) är ett XML -frågespråk som är starkt förankrat i XPath och XML Schema. Den tillhandahåller metoder för att komma åt, manipulera och returnera XML och är främst tänkt som ett frågespråk för XML -databaser .
  • XML Signature definierar syntax och behandlingsregler för att skapa digitala signaturer på XML -innehåll.
  • XML -kryptering definierar syntax och behandlingsregler för kryptering av XML -innehåll.
  • xml-model (Del 11: Schema Association of ISO/IEC 19757-DSDL ) definierar ett sätt att associera alla xml-dokument med någon av schematyperna som nämns ovan .

Vissa andra specifikationer som utformats som en del av "XML -kärnan" har inte lyckats hitta bred användning, inklusive XInclude , XLink och XPointer .

Programmeringsgränssnitt

Designmålen för XML inkluderar: "Det ska vara enkelt att skriva program som bearbetar XML -dokument." Trots detta innehåller XML -specifikationen nästan ingen information om hur programmerare kan gå tillväga för att göra sådan behandling. Den XML Infoset specifikationen ger ett ordförråd för att hänvisa till konstruktionerna i ett XML-dokument, men ger inte någon vägledning om hur man tillgång till denna information. En mängd olika API: er för åtkomst till XML har utvecklats och använts, och några har standardiserats.

Befintliga API: er för XML -bearbetning tenderar att falla i följande kategorier:

  • Strömorienterade API: er tillgängliga från ett programmeringsspråk, till exempel SAX och StAX .
  • Tree-traversal API: er tillgängliga från ett programmeringsspråk, till exempel DOM .
  • XML-databinding , som tillhandahåller en automatisk översättning mellan ett XML-dokument och programmeringsspråkiga objekt.
  • Deklarativa transformationsspråk som XSLT och XQuery .
  • Syntaxtillägg till programmeringsspråk för allmänna ändamål, till exempel LINQ och Scala .

Strömorienterade anläggningar kräver mindre minne och är för vissa uppgifter baserade på en linjär genomgång av ett XML-dokument snabbare och enklare än andra alternativ. Tree-traversal och data-bindande API: er kräver vanligtvis användning av mycket mer minne, men är ofta mer praktiska för programmerare; vissa inkluderar deklarativ hämtning av dokumentkomponenter via användning av XPath -uttryck.

XSLT är utformat för deklarativ beskrivning av XML-dokumenttransformationer och har implementerats brett i såväl paket på serversidan som webbläsare. XQuery överlappar XSLT i sin funktionalitet, men är utformad mer för att söka i stora XML -databaser .

Enkelt API för XML

Enkelt API för XML (SAX) är ett lexikaliskt , händelsestyrt API där ett dokument läses i serie och dess innehåll rapporteras som återuppringningar till olika metoder på ett hanteringsobjekt av användarens design. SAX är snabbt och effektivt att implementera, men svårt att använda för att slumpmässigt extrahera information från XML, eftersom det tenderar att belasta applikationsförfattaren att hålla reda på vilken del av dokumentet som behandlas. Den är bättre lämpad för situationer där vissa typer av information alltid hanteras på samma sätt, oavsett var de förekommer i dokumentet.

Pull -analys

Pull -analys analyserar dokumentet som en serie objekt som läses i följd med iteratorns designmönster . Detta möjliggör skrivning av rekursiva nedstigningsparsers där strukturen för koden som utför analysen speglar strukturen för XML -analysen och mellanliggande analyserade resultat kan användas och nås som lokala variabler inom funktionerna som utför analysen eller skickas ner ( som funktionsparametrar) till lägre nivåfunktioner, eller returneras (som funktionsreturvärden) till funktioner på högre nivå. Exempel på pull -parsers inkluderar Data :: Edit :: Xml i Perl , StAX i Java -programmeringsspråket, XMLPullParser i Smalltalk , XMLReader i PHP , ElementTree.iterparse i Python , System.Xml.XmlReader i .NET Framework och DOM traversal API (NodeIterator och TreeWalker).

En pull -parser skapar en iterator som sekventiellt besöker de olika elementen, attributen och data i ett XML -dokument. Kod som använder denna iterator kan testa det aktuella objektet (för att till exempel berätta om det är en starttagg eller sluttagg eller text) och inspektera dess attribut (lokalt namn, namnområde , värden för XML-attribut, värde på text, etc.), och kan också flytta iteratorn till nästa objekt. Koden kan således extrahera information från dokumentet när den passerar den. Metoden för rekursiv nedstigning tenderar att låna sig för att behålla data som typade lokala variabler i koden som gör analysen, medan SAX till exempel vanligtvis kräver en parser för att manuellt underhålla mellanliggande data i en stapel med element som är överordnade element i elementet analyseras. Pull-parsing-kod kan vara enklare att förstå och underhålla än SAX-parsing-kod.

Dokumentobjektmodell

Document Object Model (DOM) är ett API som gör det möjligt för navigering i hela dokumentet som om det vore ett träd av nod objekt som representerar dokumentets innehåll. Ett DOM -dokument kan skapas av en parser eller genereras manuellt av användare (med begränsningar). Datatyper i DOM -noder är abstrakta; implementeringar tillhandahåller sina egna programmeringsspråkspecifika bindningar . DOM -implementeringar tenderar att vara minneskrävande , eftersom de i allmänhet kräver att hela dokumentet laddas in i minnet och konstrueras som ett träd av objekt innan åtkomst tillåts.

Databinding

.

XML som datatyp

XML har framträtt som en förstklassig datatyp på andra språk. Den ECMAScript för XML (E4X) förlängning av ECMAScript / JavaScript uttryckligen definierar två specifika objekt (XML och XMLList) för JavaScript, som stöder XML-dokument noder och XML-nod listor som olika objekt och använda en punktnotation specificerar förälder-barn relationer . E4X stöds av Mozilla 2.5+ webbläsare (men nu utfasade) och Adobe Actionscript , men har inte antagits mer universellt. Liknande noteringar används i Microsofts LINQ -implementering för Microsoft .NET 3.5 och senare och i Scala (som använder Java VM). XML-applikationen med öppen källkod, som tillhandahåller ett Linux-liknande skal med specialfunktioner för XML-manipulation, behandlar XML på samma sätt som en datatyp med hjälp av noteringen <[]>. Den Resource Description Framework definierar en datatyp rdf:XMLLiteralför att hålla emballeras, Canonical XML . Facebook har tagit fram tillägg till PHP- och JavaScript -språken som lägger till XML i kärnsyntaxen på liknande sätt som E4X, nämligen XHP respektive JSX .

Historia

XML är ett program profil av SGML (ISO 8879).

Mångsidigheten hos SGML för dynamisk informationsvisning visades av tidiga digitala medieutgivare i slutet av 1980 -talet innan Internet växte fram. I mitten av 1990-talet hade några utövare av SGML skaffat sig erfarenhet av den då nya World Wide Web och trodde att SGML erbjöd lösningar på några av de problem som webben sannolikt skulle möta när den växte. Dan Connolly lade SGML till listan över W3C: s aktiviteter när han anslöt sig till personalen 1995; arbetet började i mitten av 1996 när Sun Microsystems- ingenjören Jon Bosak utvecklade en stadga och rekryterade medarbetare. Bosak var väl ansluten i det lilla samhället av människor som hade erfarenhet av både SGML och webben.

XML sammanställdes av en arbetsgrupp bestående av elva medlemmar, med stöd av en (ungefär) 150 medlemmar stor intressegrupp. Teknisk debatt ägde rum på Intressegruppens utskicklista och frågor löstes genom konsensus eller, när det misslyckades, majoritetsomröstning i arbetsgruppen. En förteckning över designbeslut och deras logik sammanställdes av Michael Sperberg-McQueen den 4 december 1997. James Clark fungerade som teknisk ledare för arbetsgruppen och bidrog särskilt med <empty />syntaxen med tomma element och namnet "XML". Andra namn som hade lagts fram för behandling var "MAGMA" (Minimal Architecture for Generalized Markup Applications), "SLIM" (Structured Language for Internet Markup) och "MGML" (Minimal Generalized Markup Language). Medredaktörerna för specifikationen var ursprungligen Tim Bray och Michael Sperberg-McQueen . Halvvägs genom projektet accepterade Bray ett konsultuppdrag med Netscape , vilket framkallade högljudda protester från Microsoft. Bray blev tillfälligt ombedd att avgå från redaktionen. Detta ledde till intensiv tvist i arbetsgruppen, så småningom löst genom utnämningen av Microsofts Jean Paoli till tredje medredaktör.

XML-arbetsgruppen träffades aldrig ansikte mot ansikte; designen uppnåddes med hjälp av en kombination av e -post och veckokonferenser. De stora designbesluten nåddes i en kort utbrott av intensivt arbete mellan augusti och november 1996, då det första arbetsutkastet till en XML -specifikation publicerades. Ytterligare designarbete fortsatte under 1997 och XML 1.0 blev en W3C -rekommendation den 10 februari 1998.

Källor

XML är en profil för en ISO -standard SGML, och det mesta av XML kommer från SGML oförändrat. Från SGML kommer separationen av logiska och fysiska strukturer (element och enheter), tillgängligheten av grammatikbaserad validering (DTD), separation av data och metadata (element och attribut), blandat innehåll, separering av bearbetning från representation ( bearbetning instruktioner ) och standardvinkel-parentes-syntaxen. SGML -deklarationen togs bort; alltså XML har en fast avgränsare set och antar Unicode som dokumentteckenuppsättning .

Andra tekniska källor för XML var TEI (Text Encoding Initiative), som definierade en profil för SGML för användning som en "överföringssyntax"; och HTML , där element var synkrona med sin resurs, dokumentteckenuppsättningar var separata från resurskodning, xml:langattributet uppfanns och (liksom HTTP ) metadata åtföljde resursen i stället för att behövas vid deklaration av en länk. ERCS-projektet (Extended Reference Concrete Syntax) i projektet SPREAD (Standardization Project Abouting East Asian Documents) i den ISO-relaterade expertgruppen för Kina/Japan/Korea Dokumentbearbetning var grunden för XML 1.0: s namnregler; SPREAD introducerade också hexadecimala numeriska teckenreferenser och begreppet referenser för att göra alla Unicode -tecken tillgängliga. För att stödja ERCS, XML och HTML bättre reviderades SGML -standarden IS 8879 1996 och 1998 med WebSGML -anpassningar. XML -rubriken följde den för ISO HyTime .

Idéer som utvecklats under diskussionen som är nya i XML inkluderade algoritmen för kodningsdetektering och kodningshuvudet, behandlingsinstruktionsmålet, xml: space -attributet och den nya nära avgränsaren för tomma elementtaggar. Begreppet välformning i motsats till giltighet (vilket möjliggör analys utan schema) formaliserades först i XML, även om det hade implementerats framgångsrikt i elektronisk bokteknik "Dynatext" -programvara; programvaran från University of Waterloo New Oxford English Dictionary Project; textprocessorn RISP LISP SGML vid Uniscope, Tokyo; US Army Missile Command IADS hypertext system; Mentor Graphics Context; Interleaf och Xerox publiceringssystem.

Versioner

Det finns två nuvarande versioner av XML:

XML 1.0

Den första ( XML 1.0 ) definierades ursprungligen 1998. Den har genomgått mindre revideringar sedan dess, utan att ha fått ett nytt versionsnummer, och finns för närvarande i sin femte upplaga, som publicerades den 26 november 2008. Det är allmänt implementerat och fortfarande rekommenderas för allmänt bruk.

XML 1.1

Den andra ( XML 1.1 ) publicerades ursprungligen den 4 februari 2004, samma dag som XML 1.0 tredje upplagan, och finns för närvarande i den andra upplagan, som publicerades den 16 augusti 2006. Den innehåller funktioner (vissa kontroversiella) som är avsedda för att göra XML enklare att använda i vissa fall. De viktigaste ändringarna är att möjliggöra användning av rader som slutar på EBCDIC- plattformar och användning av skript och tecken som saknas i Unicode 3.2. XML 1.1 är inte särskilt allmänt implementerat och rekommenderas endast för dem som behöver dess speciella funktioner.

Giltiga Unicode -tecken i XML 1.0 och XML 1.1

Innan den femte upplagan släpptes skilde sig XML 1.0 från XML 1.1 genom att ha strängare krav på tecken tillgängliga för användning i element- och attributnamn och unika identifierare: i de första fyra utgåvorna av XML 1.0 räknades tecknen uteslutande med en specifik version av Unicode- standard (Unicode 2.0 till Unicode 3.2.) Den femte upplagan ersätter mekanismen för XML 1.1, vilket är mer framtidssäkert men minskar redundans . Tillvägagångssättet i den femte upplagan av XML 1.0 och i alla versioner av XML 1.1 är att endast vissa tecken är förbjudna i namn, och allt annat får rymma lämpliga namntecken i framtida Unicode -versioner. I den femte upplagan kan XML -namn innehålla tecken i balinesiska , Cham eller feniciska skript bland många andra som har lagts till Unicode sedan Unicode 3.2.

Nästan vilken Unicode -kodpunkt som helst kan användas i teckendata och attributvärden för ett XML 1.0- eller 1.1 -dokument, även om tecknet som motsvarar kodpunkten inte är definierat i den aktuella versionen av Unicode. I teckendata och attributvärden tillåter XML 1.1 fler kontrolltecken än XML 1.0, men för "robusthet" måste de flesta kontrolltecken som introduceras i XML 1.1 uttryckas som numeriska teckenreferenser (och #x7F till #x9F , som hade tillåtits i XML 1.0, i XML 1.1 måste till och med uttryckas som numeriska teckenreferenser). Bland de kontrolltecken som stöds i XML 1.1 finns två radbrytningskoder som måste behandlas som blanksteg. Mellanrumstecken är de enda kontrollkoderna som kan skrivas direkt.

XML 2.0

Det har diskuterats en XML 2.0, även om ingen organisation har meddelat planer för arbete med ett sådant projekt. XML-SW (SW för skunkworks ), skrivet av en av de ursprungliga XML-utvecklarna, innehåller några förslag på hur en XML 2.0 kan se ut: eliminering av DTD från syntax, integration av namnutrymmen , XML Base och XML Information Set i basen standard.

Binär XML

World Wide Web Consortium har också en XML -grupp för binär karaktärisering som gör förundersökningar kring användningsfall och egenskaper för en binär kodning av XML -informationsuppsättning. Arbetsgruppen är inte chartrad för att ta fram några officiella standarder. Eftersom XML per definition är textbaserat använder ITU-T och ISO namnet Fast Infoset för sin egen binära infoset för att undvika förvirring (se ITU-T Rec. X.891 och ISO/IEC 24824-1).

Kritik

XML och dess tillägg har regelbundet kritiserats för ordenlighet, komplexitet och redundans.

Att kartlägga den grundläggande trädmodellen för XML till typsystem för programmeringsspråk eller databaser kan vara svårt, särskilt när XML används för att utbyta mycket strukturerad data mellan applikationer, vilket inte var dess främsta designmål. Emellertid tillåter XML -databindningssystem att applikationer får åtkomst till XML -data direkt från objekt som representerar en datastruktur för datan i programmeringsspråket som används, vilket garanterar typsäkerhet , snarare än att använda DOM eller SAX för att hämta data från en direkt representation av XML sig. Detta uppnås genom att automatiskt skapa en kartläggning mellan element i XML -schemat XSD i dokumentet och medlemmar i en klass som ska representeras i minnet.

Annan kritik försöker motbevisa påståendet att XML är ett självbeskrivande språk (även om XML-specifikationen i sig inte gör något sådant påstående).

JSON , YAML och S-Expressions föreslås ofta som enklare alternativ (se Jämförelse av dataserialiseringsformat ) som fokuserar på att representera mycket strukturerad data snarare än dokument, som kan innehålla både mycket strukturerat och relativt ostrukturerat innehåll. W3C -standardiserade XML -schemaspecifikationer erbjuder emellertid ett bredare utbud av strukturerade XSD -datatyper jämfört med enklare serialiseringsformat och erbjuder modularitet och återanvändning via XML -namnutrymmen .

Se även

Anteckningar

Referenser

Vidare läsning