XML - XML

XML (vakio)
Laajennettava merkintäkieli
XML (Extensible Markup Language) logo.svg
Tila Julkaistu, W3C -suositus
Vuosi alkoi 1996 ; 25 vuotta sitten ( 1996 )
Ensimmäinen julkaistu 10. helmikuuta 1998 ; 23 vuotta sitten (W3C -suosituksena) ( 1998-02-10 )
Uusin versio 1.1 (toinen painos)
29. syyskuuta 2006 ; 15 vuotta sitten ( 2006-09-29 )
Organisaatio World Wide Web Consortium (W3C)
Toimittajat
Perusstandardit SGML
Liittyvät standardit XML -malli
Verkkotunnus Tietojen sarjoittaminen
Lyhenne XML
Verkkosivusto www .w3 .org /xml
XML (tiedostomuoto)
Tiedostopääte
.xml
Internet -mediatyyppi
Yhtenäinen tyyppitunniste (UTI) public.xml
UTI -konformaatio public.text
Maaginen numero <?xml
Kehittäjä World Wide Web Consortium
Muototyyppi Merkintäkieli
Laajennettu alkaen SGML
Laajennettu
Vakio
Avoin muoto ? Joo

Extensible Markup Language ( XML ) on kuvauskieli , joka määrittelee joukon sääntöjä, jotka koodaavat asiakirjoja on muodossa, joka on sekä ihmisen luettavissa ja koneellisesti luettavassa . World Wide Web Consortium : n XML 1.0 Specification 1998 ja useat muut asiaan liittyvät tekniset-ne kaikki ilmaiseksi avoimia standardeja -define XML.

XML -suunnittelutavoitteet korostavat yksinkertaisuutta, yleisyyttä ja käytettävyyttä Internetissä . Se on tekstidatamuoto, joka tukee voimakkaasti Unicodea eri ihmiskielille . Vaikka XML: n suunnittelussa keskitytään asiakirjoihin, kieltä käytetään laajalti mielivaltaisten tietorakenteiden , kuten verkkopalveluiden, esittämiseen .

XML-pohjaisten kielten määrittelyssä on useita skeemajärjestelmiä , kun taas ohjelmoijat ovat kehittäneet monia sovellusohjelmointirajapintoja (API) XML-tietojen käsittelyn helpottamiseksi.

Sovellukset

Laajennettavien merkintäkielien välttämättömyyden ydin selitetään Markup -kielellä (esimerkiksi katso Markup language § XML ) ja Standard Generalized Markup Language .

Satoja XML -syntaksia käyttäviä asiakirjamuotoja on kehitetty, mukaan lukien RSS , Atom , SOAP , SVG ja XHTML . XML-pohjaiset muodot ovat oletuksena monien toimisto-tuottavuuden työkalut, kuten Microsoft Office ( Office Open XML ), OpenOffice.org ja LibreOffice ( OpenDocument ), ja Apple : n iWork . XML on myös toimittanut peruskielen viestintäprotokollille , kuten XMPP: lle . Hakemukset Microsoft .NET Framework käyttö XML-tiedostojen konfigurointiin ja omaisuuden luettelot ovat toteutuksen konfiguraatio varastointi rakennettu XML.

Monet alan tietostandardit , kuten Health Level 7 , OpenTravel Alliance , FpML , MISMO ja National Information Exchange Model, perustuvat XML: ään ja XML -skeemamäärityksen rikkaisiin ominaisuuksiin. Monet näistä standardeista ovat melko monimutkaisia, eikä ole harvinaista, että eritelmään kuuluu useita tuhansia sivuja. Julkaisussa Darwin Information Typing Architecture on XML -alan datastandardi . XML: ää käytetään laajasti eri julkaisumuotojen tukena.

XML: ää käytetään laajalti palvelukeskeisessä arkkitehtuurissa (SOA). Eri järjestelmät kommunikoivat keskenään vaihtamalla XML -viestejä. Viestinvaihtomuoto on standardoitu XML -skeemana (XSD). Tätä kutsutaan myös kanoniseksi kaavaksi. XML on tullut yleiseen käyttöön tietojen vaihdossa Internetissä. IETF RFC: 3023 , jonka RFC: 7303 on nyt korvannut , antoi säännöt Internet -mediatyyppien rakentamisesta käytettäväksi XML: ää lähetettäessä. Se määrittää myös mediatyypit application/xmlja text/xml, jotka sanovat vain, että tiedot ovat XML -muodossa, eikä mitään sen semantiikasta .

RFC 7303 suosittelee myös, että XML-pohjaisille kielille annetaan mediatyypit, jotka päättyvät kirjaimiin +xml; esimerkiksi image/svg+xmlvarten SVG . Muita ohjeita XML: n käytöstä verkkoyhteydessä on RFC 3470: ssä, joka tunnetaan myös nimellä IETF BCP 70, asiakirja, joka kattaa monia XML-pohjaisen kielen suunnittelun ja käyttöönoton näkökohtia.

Keskeinen terminologia

Tämän osan materiaali perustuu XML -määritykseen. Tämä ei ole tyhjentävä luettelo kaikista XML -muodossa olevista rakenteista; se tarjoaa johdannon tärkeimmistä rakenteista, joita tavataan eniten päivittäisessä käytössä.

Merkki

XML-dokumentti on merkkijono merkkiä . Lähes jokainen laillinen Unicode -merkki voi esiintyä XML -asiakirjassa.

Prosessori ja sovellus

Prosessori analysoi markup ja välittää jäsennelty tieto erään sovelluksen . Tekniset tiedot asettavat vaatimukset sille, mitä XML -prosessorin on tehtävä ja mitä ei, mutta sovellus ei kuulu sen soveltamisalaan. Prosessoria (kuten spesifikaatio sitä kutsuu) kutsutaan usein puhekielessä XML -jäsentäjäksi .

Merkinnät ja sisältö

XML -asiakirjan muodostavat merkit on jaettu merkintöihin ja sisältöön , jotka voidaan erottaa soveltamalla yksinkertaisia ​​syntaktisia sääntöjä. Yleensä merkkijonot, jotka muodostavat merkinnän, joko alkavat merkillä <ja päättyvät a >: lla tai ne alkavat merkillä &ja päättyvät a: lla ;. Merkkijonot, jotka eivät ole merkintöjä, ovat sisältöä. Kuitenkin CDATA -osiossa erotimet <![CDATA[ja ]]>luokitellaan merkinnöiksi, kun taas niiden välinen teksti luokitellaan sisällöksi. Lisäksi välilyönti ennen ja jälkeen uloimman elementin luokitellaan merkinniksi.

Tag

Tunniste on markup rakenteen, joka alkaa <ja päättyy kanssa >. Tunnisteita on kolmenlaisia:
  • start-tag , kuten <section>;
  • päätunniste , kuten </section>;
  • tyhjän elementin tagi , kuten <line-break />.

Elementti

Elementti on looginen asiakirja komponentin, joka joko alkaa start-tag ja päät matching pää-tag tai koostuu ainoastaan tyhjän-elementin tunniste. Mahdolliset aloitus- ja lopputunnisteen väliset merkit ovat elementin sisältöä , ja ne voivat sisältää merkintöjä, mukaan lukien muut elementit, joita kutsutaan ali-elementeiksi . Esimerkki on <greeting>Hello, world!</greeting>. Toinen on <line-break />.

Attribuutti

Attribuutti on markup konstruktin, joka koostuu nimi-arvo-parin , joka on olemassa sisällä aloitus- tai tyhjä-elementin tunniste. Esimerkki on <img src="madonna.jpg" alt="Madonna" />, että määritteiden nimet ovat "src" ja "alt" ja niiden arvot ovat "madonna.jpg" ja "Madonna". Toinen esimerkki on <step number="3">Connect A to B.</step>, että määritteen nimi on "numero" ja sen arvo on "3". XML -määritteellä voi olla vain yksi arvo ja jokainen attribuutti voi näkyä korkeintaan kerran kussakin elementissä. Yleisessä tilanteessa, jossa halutaan luettelo useista arvoista, tämä on tehtävä koodaamalla luettelo hyvin muodostettuun XML-määritteeseen, jossa on jokin muoto, jota XML ei määrittele. Yleensä tämä on joko pilkulla tai puolipisteellä erotettu luettelo tai, jos yksittäisten arvojen tiedetään sisältävän välilyöntejä, voidaan käyttää välilyöntejä. <div class="inner greeting-box">Welcome!</div>, jossa määritteellä "luokka" on sekä arvo "sisäinen tervehdyslaatikko" ja se osoittaa myös kaksi CSS- luokan nimeä "sisäinen" ja "tervehdyslaatikko".

XML -ilmoitus

XML -asiakirjat voivat alkaa XML -ilmoituksella, joka kuvaa joitakin tietoja itsestään. Esimerkki on <?xml version="1.0" encoding="UTF-8"?>.

Hahmot ja pakeneminen

XML -asiakirjat koostuvat kokonaan Unicode -ohjelmiston hahmoista . Lukuun ottamatta pientä määrää nimenomaan poissuljettuja ohjausmerkkejä , kaikki Unicoden määrittämät merkit voivat näkyä XML -asiakirjan sisällössä.

XML sisältää tilat asiakirjan muodostavien Unicode -merkkien koodauksen tunnistamiseksi ja sellaisten merkkien ilmaisemiseksi, joita syystä tai toisesta ei voida käyttää suoraan.

Kelvollisia merkkejä

Unicode -koodipisteet seuraavilla alueilla ovat voimassa XML 1.0 -asiakirjoissa:

  • U+0009 (vaakasuora välilehti), U+000A (rivisyöttö), U+000D (kuljetuspaluu): nämä ovat ainoat XML 1.0: ssa hyväksytyt C0 -ohjaimet;
  • U+0020 – U+D7FF, U+E000 – U+FFFD: tämä sulkee pois muutamat merkit BMP: ssä (kaikki sijaiset, U+FFFE ja U+FFFF ovat kiellettyjä);
  • U+10000 – U+10FFFF: tämä sisältää kaikki lisätasojen koodipisteet, myös ei-merkit.

XML 1.1 laajentaa sallittujen merkkien joukon sisältämään kaikki edellä mainitut sekä muut merkit U+0001 – U+001F. Samaan aikaan se kuitenkin rajoittaa muiden C0- ja C1 -ohjausmerkkien kuin U+0009 (vaakasuora välilehti), U+000A (rivin syöttö), U+000D (kuljetuspaluu) ja U+0085 (seuraava rivi) käyttöä ) vaatimalla, että ne on kirjoitettu pakollisessa muodossa (esimerkiksi U+0001 on kirjoitettava &#x01;tai vastaava). C1 -merkkien tapauksessa tämä rajoitus on taaksepäin yhteensopimattomuus; se otettiin käyttöön yleisten koodausvirheiden havaitsemiseksi.

Koodi kohta U + 0000 (Null) on ainoa merkki, joka ei ole sallittua missään XML 1,0 tai 1,1 asiakirja.

Koodauksen tunnistus

Unicode -merkistö voidaan koodata tavuiksi tallennusta tai lähetystä varten useilla eri tavoilla, joita kutsutaan "koodauksiksi". Unicode itse määrittelee koodaukset, jotka kattavat koko ohjelmiston; tunnettuja ovat UTF-8 ja UTF-16 . On monia muita Unicodea edeltäviä tekstikoodauksia, kuten ASCII ja ISO/IEC 8859 ; niiden hahmovalikoima on lähes kaikissa tapauksissa Unicode -merkistön osajoukkoja.

XML sallii minkä tahansa Unicode-määrittelyn ja muiden koodausten käytön, joiden merkit esiintyvät myös Unicode-koodissa. XML tarjoaa myös mekanismin, jolla XML -prosessori voi luotettavasti ilman ennakkotietoa määrittää, mitä koodausta käytetään. Muut koodaukset kuin UTF-8 ja UTF-16 eivät välttämättä tunnista kaikkia XML-jäsennyksiä.

Pakeneminen

XML tarjoaa pakolaistiloja sellaisten merkkien sisällyttämiseen, jotka ovat ongelmallisia sisällyttää suoraan. Esimerkiksi:

  • Merkit "<" ja "&" ovat keskeisiä syntaksimerkkejä, eivätkä ne välttämättä koskaan ilmesty CDATA -osion ulkopuoliseen sisältöön . On sallittua, mutta ei suositeltavaa käyttää "<" XML -entiteettiarvoissa.
  • Jotkin merkkikoodaukset tukevat vain Unicoden osajoukkoa. Esimerkiksi on laillista koodata XML -asiakirja ASCII: een, mutta ASCII -koodista puuttuu Unicode -merkkien, kuten "é", koodipisteet.
  • Merkkiä ei ehkä voi kirjoittaa kirjoittajan koneella.
  • Joillakin merkeillä on kuvioita , joita ei voida visuaalisesti erottaa muista merkeistä, kuten murtumaton välilyönti ( &#xa0;) "" ja välilyönti ( &#x20;) "", ja kyrillinen iso kirjain A ( &#x410;) "А" ja latinalainen iso kirjain A ( &#x41;) "A".

Valmiita kokonaisuuksia on viisi :

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

Kaikki sallitut Unicode -merkit voidaan esittää numeerisella merkkiviittauksella . Harkitse kiinalaista merkkiä "中", jonka numeerinen koodi Unicodessa on heksadesimaali 4E2D tai desimaali 20 013. Käyttäjä, jonka näppäimistö ei tarjoa mitään tapaa kirjoittaa tätä merkkiä, voi silti lisätä sen XML -asiakirjaan, joka on koodattu joko &#20013;tai &#x4e2d;. Samoin merkkijono "I <3 Jörg" voidaan koodata sisällytettäväksi XML -asiakirjaan nimellä I &lt;3 J&#xF6;rg.

&#0;ei kuitenkaan ole sallittu, koska nollamerkki on yksi XML: n ulkopuolelle jätetyistä ohjausmerkeistä, vaikka käytetään numeerista merkkiviittausta. Tällaisten merkkien esittämiseen tarvitaan vaihtoehtoinen koodausmekanismi, kuten Base64 .

Kommentit

Kommentit voivat näkyä missä tahansa asiakirjassa muiden merkintöjen ulkopuolella. Kommentit eivät voi näkyä ennen XML -ilmoitusta. Kommentit alkavat <!--ja päättyvät siihen -->. Yhteensopivuuden SGML : n kanssa merkkijono "-" (kaksoisviiva) ei ole sallittu kommenttien sisällä; Tämä tarkoittaa, että kommentteja ei voi sisäistää. Merkillä ei ole erityistä merkitystä kommenteissa, joten kokonaisuus- ja merkkiviittauksia ei tunnisteta sellaisiksi, eikä asiakirjan koodauksen merkkijoukon ulkopuolisia merkkejä voida esittää.

Esimerkki pätevästä kommentista: <!--no need to escape <code> & such in comments-->

Kansainvälinen käyttö

XML 1.0 (viides painos) ja XML 1.1 tukevat lähes minkä tahansa Unicode -merkin suoraa käyttöä elementtien nimissä, määritteissä, kommenteissa, merkkitiedoissa ja käsittelyohjeissa (lukuun ottamatta niitä, joilla on erityinen symbolinen merkitys itse XML: ssä, kuten -merkki, "<"). Seuraava on hyvin muotoiltu XML-asiakirja, joka sisältää kiinalaisia , armenialaisia ja kyrillisiä merkkejä:

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

Syntaktinen oikeellisuus ja virheiden käsittely

XML-määritys määrittelee XML-asiakirjan hyvin muotoilluksi tekstiksi, mikä tarkoittaa, että se täyttää eritelmän syntaksisääntöjen luettelon. Joitakin melko pitkän luettelon keskeisiä kohtia ovat:

  • Asiakirja sisältää vain oikein koodattuja laillisia Unicode -merkkejä.
  • Mikään erikoissyntaksihahmoista, kuten <ja ei &näy, paitsi silloin, kun he suorittavat merkintöjen määrittelyrooleja.
  • Elementit rajaava aloitus-, lopputunniste ja tyhjän elementin tagi on sisäkkäin sijoitettu, eikä yhtään puuttu eikä päällekkäisyyttä.
  • Tunnisteiden nimet erottavat isot ja pienet kirjaimet. aloitus- ja lopputunnisteen on vastattava tarkasti.
  • Tunnisteiden nimet eivät saa sisältää mitään merkkejä! "#$%& '()*+,/; <=>?@[\]^` {|} ~ Eikä välilyöntiä, eivätkä ne voi alkaa "-", "." tai numeerinen luku.
  • Yksi juurielementti sisältää kaikki muut elementit.

XML-asiakirjan määritelmä sulkee pois tekstit, jotka sisältävät hyvin muotoiltujen sääntöjen rikkomuksia; ne eivät yksinkertaisesti ole XML. XML -prosessorin, joka kohtaa tällaisen rikkomuksen, on ilmoitettava tällaisista virheistä ja lopetettava tavallinen käsittely. Tämä käytäntö, jota joskus kutsutaan " drakoniseksi virheidenkäsittelyksi", on merkittävä ristiriidassa HTML: ää käsittelevien ohjelmien käyttäytymisen kanssa , joiden tarkoituksena on tuottaa kohtuullinen tulos vakavista merkintävirheistä huolimatta. XML: n politiikkaa tällä alalla on arvosteltu Postelin lain rikkomiseksi ("Ole konservatiivinen lähettämässäsi; ole liberaali siinä, mitä hyväksyt").

XML-spesifikaatio määrittelee voimassa XML-asiakirjan kuin hyvin muodostettu XML-dokumentin , joka vastaa myös sääntöjen perusteella Document Type Definition (DTD).

Kaaviot ja validointi

Hyvin muotoillun lisäksi XML-asiakirja voi olla kelvollinen . Tämä tarkoittaa, että se sisältää viittauksen asiakirjatyypin määritelmään (DTD) ja että sen elementit ja määritteet on ilmoitettu kyseisessä DTD: ssä ja noudattavat niitä koskevia kieliopillisia sääntöjä.

XML-prosessorit luokitellaan validoiviksi tai ei-validoiviksi sen mukaan, tarkistavatko ne XML-asiakirjojen pätevyyden vai eivät. Käsittelijän, joka havaitsee kelpoisuusvirheen, on voitava ilmoittaa siitä, mutta se voi jatkaa normaalia käsittelyä.

DTD on esimerkki kaavasta tai kieliopista . XML 1.0: n ensimmäisen julkaisun jälkeen XML: n skeemakielten alalla on tehty paljon työtä. Tällaiset skeemakielet rajoittavat tyypillisesti asiakirjassa käytettävien elementtien joukkoa, joita attribuutteja voidaan soveltaa niihin, niiden esiintymisjärjestystä ja sallittuja vanhemman/lapsen suhteita.

Asiakirjatyypin määritelmä

XML: n vanhin mallikieli on SGML: ltä peritty dokumenttityyppimääritys (DTD).

DTD: llä on seuraavat edut:

  • DTD -tuki on kaikkialla läsnä, koska se sisältyy XML 1.0 -standardiin.
  • DTD: t ovat suppeita verrattuna elementtipohjaisiin skeemakieliin, ja siksi ne tarjoavat enemmän tietoa yhdellä näytöllä.
  • DTD: t mahdollistavat vakioiden julkisten yhteisöjen joukkojen ilmoittamisen hahmojen julkaisemista varten.
  • DTD -tiedostot määrittävät asiakirjatyypin eikä nimiavaruuden käyttämiä tyyppejä, joten ne ryhmittävät kaikki asiakirjan rajoitukset yhteen kokoelmaan.

DTD: llä on seuraavat rajoitukset:

  • Heillä ei ole nimenomaista tukea XML : n uusille ominaisuuksille , mikä tärkeintä nimiavaruuksille .
  • Heiltä puuttuu ilmeikkyys. XML DTD: t ovat yksinkertaisempia kuin SGML DTD: t ja on tiettyjä rakenteita, joita ei voida ilmaista tavallisilla kieliopilla. DTD -tiedostot tukevat vain alkeellisia tietotyyppejä.
  • Heiltä puuttuu luettavuus. DTD suunnittelijat tekevät tyypillisesti runsaan käytön parametrin yksiköiden (jotka käyttäytyvät olennaisesti tekstisisältöä makroja ), joiden avulla on helpompi määritellä monimutkaisia kielioppeja, mutta kustannuksella selkeyttä.
  • He käyttävät kaavan kuvaamiseen SGML: stä perityn säännöllisen lausekkeen syntaksiin perustuvaa syntaksia. Tyypilliset XML-sovellusliittymät, kuten SAX, eivät yritä tarjota sovelluksille jäsenneltyä syntaksin esitystä, joten se on ohjelmoijien saatavilla vähemmän kuin elementtipohjainen syntaksi voi olla.

Kaksi erikoista ominaisuutta, jotka erottavat DTD: t muista skeematyypeistä, ovat syntaktinen tuki DTD: n upottamiselle XML -asiakirjoihin ja entiteettien määrittämiseen , jotka ovat mielivaltaisia ​​tekstin tai merkintöjen fragmentteja, jotka XML -prosessori lisää itse DTD: hen ja XML -asiakirjaan missä tahansa viitataan, kuten hahmojen pakeneminen.

DTD -tekniikkaa käytetään edelleen monissa sovelluksissa sen yleisyyden vuoksi.

Kaavio

Uudempi skeemakieltä, kuvataan W3C seuraaja DTD, on XML , usein mainitsema alkukirjainlyhenne varten XML tapauksissa XSD (XML Schema Definition). XSD: t ovat paljon tehokkaampia kuin DTD: t XML -kielten kuvaamisessa. Ne käyttävät rikasta datatyping -järjestelmää ja mahdollistavat yksityiskohtaisemmat rajoitukset XML -asiakirjan loogiselle rakenteelle. XSD-tiedostot käyttävät myös XML-pohjaista muotoa, mikä mahdollistaa tavallisten XML-työkalujen käytön niiden käsittelyn helpottamiseksi.

xs: skeemaelementti, joka määrittää kaavan:

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

RELAX NG

Relax NG (säännöllinen kieli XML Next Generation) on alunperin määritelty OASIS ja on nyt vakiona (osa 2: Regular-kielioppi-pohjainen validointi on ISO / IEC 19757 - DSDL ). RELAX NG -kaaviot voidaan kirjoittaa joko XML-pohjaiseen syntaksiin tai pienempään ei-XML-syntaksiin; kaksi syntaksia ovat isomorfisia ja James Clarkin muuntotyökalu - Trang - voi muuntaa niiden välillä menettämättä tietoja. RELAX NG: llä on yksinkertaisempi määrittely- ja vahvistuskehys kuin XML -skeemalla, mikä helpottaa sen käyttöä ja käyttöönottoa. Se on myös mahdollisuus käyttää tietotyypille puitteet laajennuksia ; esimerkiksi RELAX NG -kaavion kirjoittaja voi vaatia XML -asiakirjan arvojen noudattamaan XML -skeematietojen määritelmiä.

Schematron

Schematron on kieli, jolla voidaan tehdä väitteitä kuvioiden olemassaolosta tai puuttumisesta XML -asiakirjassa. Se käyttää tyypillisesti XPath -lausekkeita . Schematron on nyt vakiona (osa 3: Sääntö-pohjainen validointi on ISO / IEC 19757 - DSDL ).

DSDL ja muut skeemakielet

DSDL (Document Schema Definition Languages) on moniosainen ISO/IEC-standardi (ISO/IEC 19757), joka kokoaa yhteen kattavan joukon pieniä kaavakieliä, joista jokainen on suunnattu tiettyihin ongelmiin. DSDL sisältää täydellisen ja kompaktin RELAX NG -syntaksin , Schematron- väite kielen ja tietotyyppien, merkkivalikoiman rajoitusten, uudelleennimeämisen ja kokonaisuuden laajentamisen sekä asiakirjatiedostojen nimiavaruuspohjaisen reitityksen eri validoijille. DSDL -skeema -kielillä ei ole vielä XML -skeemojen toimittajatukea, ja ne ovat jossain määrin teollisten kustantajien ruohonjuuritason reaktio siihen, että XML -kaaviot eivät ole hyödyllisiä julkaisemiseen .

Jotkut skeemakielet kuvaavat paitsi tietyn XML -muodon rakennetta, mutta tarjoavat myös rajoitetusti mahdollisuuksia vaikuttaa yksittäisten XML -tiedostojen käsittelyyn, jotka ovat tämän muodon mukaisia. Sekä DTD: llä että XSD: llä on tämä kyky; ne voivat esimerkiksi tarjota infoset -lisäysmahdollisuuden ja määritteen oletusasetukset. RELAX NG ja Schematron eivät tahallisesti tarjoa näitä.

Liittyvät tiedot

XML: ään läheisesti liittyvien spesifikaatioiden ryhmä on kehitetty heti XML 1.0: n ensimmäisen julkaisun jälkeen. Usein termiä "XML" käytetään viittaamaan XML: ään yhdessä yhden tai useamman muun tekniikan kanssa, joita on pidetty osana XML -ydintä.

  • XML -nimitilat mahdollistavat, että sama asiakirja sisältää XML -elementtejä ja -määritteitä, jotka on otettu eri sanastosta ilman, että nimitörmäyksiä tapahtuu. Vaikka XML -nimitilat eivät ole osa XML -määritystä, käytännössä kaikki XML -ohjelmistot tukevat myös XML -nimiavaruuksia.
  • XML Base määrittää xml:basemääritteen, jota voidaan käyttää perustana suhteellisten URI -viittausten ratkaisemiselle yksittäisen XML -elementin puitteissa.
  • XML Information Set tai XML Infoset on abstrakti tietomalli XML kannalta tiedon kohteita . Tietojoukkoa käytetään yleisesti XML -kielten spesifikaatioissa, jotta voidaan helpommin kuvata kielien sallimien XML -rakenteiden rajoituksia.
  • XSL (Extensible Stylesheet Language) on kieliryhmä, jota käytetään XML -asiakirjojen muuntamiseen ja esittämiseen, jaettuna kolmeen osaan:
  • XSLT (XSL Transformations), XML-kieli XML-asiakirjojen muuntamiseksi muiksi XML-asiakirjoiksi tai muihin muotoihin, kuten HTML, tavallinen teksti tai XSL-FO. XSLT on erittäin tiiviisti yhdistetty XPathiin, jolla se käsittelee syötteen XML -asiakirjan komponentteja, lähinnä elementtejä ja määritteitä.
  • XSL-FO (XSL Formatting Objects), XML-kieli XML-asiakirjojen renderointiin, jota käytetään usein PDF-tiedostojen luomiseen.
  • XPath (XML Path Language), ei-XML-kieli XML-asiakirjan osien (elementtien, määritteiden ja niin edelleen) käsittelemiseksi. XPathia käytetään laajalti muissa XML-ydinmäärityksissä ja ohjelmointikirjastoissa XML-koodatun datan käyttämiseksi.

Joitakin muita "XML -ytimen " osana suunniteltuja eritelmiä ei ole löydetty laajasti, mukaan lukien XInclude , XLink ja XPointer .

Ohjelmointirajapinnat

XML -suunnittelutavoitteisiin kuuluu: "On oltava helppo kirjoittaa ohjelmia, jotka käsittelevät XML -asiakirjoja." Tästä huolimatta XML -spesifikaatio ei sisällä lähes mitään tietoa siitä, miten ohjelmoijat voisivat suorittaa tällaisen käsittelyn. XML Infoset määritys tarjoaa sanastoa viitata konstruktioita sisällä XML-asiakirjan, mutta ei anna mitään ohjeita siitä, miten saada näitä tietoja. On kehitetty ja käytetty erilaisia sovellusliittymiä XML: n käyttöä varten, ja osa niistä on standardoitu.

Nykyiset XML -käsittelyyn tarkoitetut sovellusliittymät kuuluvat yleensä seuraaviin luokkiin:

  • Stream-suuntautuneet sovellusliittymät, joita voi käyttää ohjelmointikielellä, esimerkiksi SAX ja StAX .
  • Puun läpikulun sovellusliittymät, jotka ovat käytettävissä ohjelmointikielellä, esimerkiksi DOM: llä .
  • XML-tietojen sitominen , joka tarjoaa automaattisen käännöksen XML-asiakirjan ja ohjelmointikielen objektien välillä.
  • Deklaratiiviset muunnoskielet, kuten XSLT ja XQuery .
  • Syntaksilaajennukset yleiskäyttöisiin ohjelmointikieliin, esimerkiksi LINQ ja Scala .

Stream-suuntautuneet tilat vaativat vähemmän muistia ja ovat tietyissä XML-asiakirjan lineaariseen läpikulkuun perustuvissa tehtävissä nopeampia ja yksinkertaisempia kuin muut vaihtoehdot. Puun läpikulku- ja dataa sitovat sovellusliittymät vaativat tyypillisesti paljon enemmän muistia, mutta ohjelmoijat käyttävät niitä usein helpommin. Jotkut sisältävät asiakirjojen osien deklaratiivisen haun XPath -lausekkeiden avulla.

XSLT on suunniteltu XML-dokumenttimuunnosten deklaratiiviseen kuvaamiseen, ja se on otettu laajasti käyttöön sekä palvelinpuolen paketeissa että verkkoselaimissa. XQuery on toiminnallisuudessaan päällekkäinen XSLT: n kanssa, mutta se on suunniteltu enemmän suurten XML -tietokantojen etsimiseen .

Yksinkertainen sovellusliittymä XML: lle

Yksinkertaista API XML (SAX) on leksikaalista , event-driven API, jossa asiakirja luetaan jaksoittain ja sen sisältö ilmoitetaan kutsuvastauksia eri menetelmiä on käsittelijä kohde käyttäjän suunnittelussa. SAX on nopea ja tehokas toteuttaa, mutta sitä on vaikea käyttää tietojen keräämiseen satunnaisesti XML -tiedostosta, koska sillä on taipumus rasittaa sovelluksen tekijää seuraamaan, mitä osaa asiakirjasta käsitellään. Se sopii paremmin tilanteisiin, joissa tietyntyyppisiä tietoja käsitellään aina samalla tavalla riippumatta siitä, missä ne ovat asiakirjassa.

Vedä jäsentäminen

Pull -jäsennys käsittelee asiakirjaa sarjana kohteita, jotka luetaan peräkkäin iteraattorin suunnittelumallin avulla . Tämän avulla voidaan kirjoittaa rekursiivisia laskeutumisanalysaattoreita , joissa jäsentävän koodin rakenne heijastaa jäsennettävän XML: n rakennetta, ja välivaiheen jäsennettyjä tuloksia voidaan käyttää ja käyttää paikallisina muuttujina jäsentävien toimintojen sisällä tai siirtää eteenpäin ( toimintoparametreina) alemman tason toimintoihin tai palautettu (toimintojen palautusarvoina) ylemmän tason toimintoihin. Esimerkkejä pull jäsentimiä kuuluu Data :: muokkaa :: XML Perl , Stax on Java -ohjelmointikielellä, XMLPullParser vuonna Smalltalk , XmlReader vuonna PHP , ElementTree.iterparse vuonna Python , System.Xml.XmlReader että .NET Framework , ja DOM traversal API (NodeIterator ja TreeWalker).

Vetäjäjäsennys luo iteraattorin, joka vierailee peräkkäin XML -asiakirjan eri elementeissä, määritteissä ja tiedoissa. Tätä iteraattoria käyttävä koodi voi testata nykyisen kohteen (esimerkiksi kertoakseen, onko se alku- tai lopputunniste tai teksti) ja tarkastella sen määritteitä (paikallinen nimi, nimitila , XML-määritteiden arvot, tekstiä jne.) ja voi myös siirtää iteraattorin seuraavaan kohteeseen. Koodi voi siten poimia tietoja asiakirjasta sen kulkiessaan. Rekursiivinen-laskeva lähestymistapa pyrkii pitämään tiedot kirjoitetuina paikallismuuttujina jäsentävässä koodissa, kun taas esimerkiksi SAX vaatii tyypillisesti jäsentimen ylläpitämään manuaalisesti välitietoja manuaalisesti elementtipinossa, jotka ovat elementin pääelementtejä jäsennellään. Pull-jäsennyskoodi voi olla helpompi ymmärtää ja ylläpitää kuin SAX-jäsennyskoodi.

Asiakirjan objektimalli

Document Object Model (DOM) on API, joka mahdollistaa navigoinnin koko asiakirjan ikään kuin se olisi puu solmun esineitä edustavat asiakirjan sisällöstä. DOM -asiakirja voidaan luoda jäsentimellä tai käyttäjät voivat luoda sen manuaalisesti (rajoituksin). DOM -solmujen tietotyypit ovat abstrakteja; toteutukset tarjoavat omat ohjelmointikielikohtaiset sidokset . DOM -toteutukset ovat yleensä muistia vaativia, koska ne edellyttävät yleensä, että koko asiakirja ladataan muistiin ja rakennetaan esineiden puuksi ennen kuin pääsy sallitaan.

Tietojen sitominen

XML -datan sitominen on XML -asiakirjojen sitominen mukautettujen ja voimakkaasti kirjoitettujen objektien hierarkiaan, toisin kuin DOM -jäsentimen luomat yleiset objektit. Tämä lähestymistapa yksinkertaistaa koodin kehittämistä ja mahdollistaa monissa tapauksissa ongelmien tunnistamisen käännösaikana eikä ajon aikana. Se sopii sovelluksiin, joissa asiakirjan rakenne on tiedossa ja kiinteä hakemuksen kirjoittamishetkellä. Esimerkkitiedonsiirtojärjestelmiä ovat Java Architecture for XML Binding (JAXB) ja XML -sarja .NET Frameworkissa . ja XML -sarjoitukset gSOAP: ssa .

XML tietotyypiksi

XML on esiintynyt ensimmäisen luokan tietotyypinä muilla kielillä. ECMAScript XML (E4X) laajennus ECMAScript / JavaScriptiä määritellään selkeästi kaksi erityistä esineitä (XML ja XMLList) JavaScript, joka tukee XML-dokumentin solmuja ja XML solmu listoja eri esineitä ja käyttää piste-merkintä määrittää vanhempi-lapsi-suhteessa . E4X: ää tukevat Mozilla 2.5+ -selaimet (tosin nyt vanhentuneet) ja Adobe Actionscript , mutta sitä ei ole otettu käyttöön yleisemmin. Samanlaisia ​​merkintöjä käytetään Microsoftin LINQ -toteutuksessa Microsoft .NET 3.5: lle ja uudemmille sekä Scalassa (joka käyttää Java VM: ää). Avoimen lähdekoodin xmlsh-sovellus, joka tarjoaa Linuxin kaltaisen kuoren, jossa on erityisominaisuuksia XML-manipulointiin, käsittelee samalla tavalla XML: ää tietotyypinä käyttäen <[]> -merkintää. RDF määrittää tietotyypin rdf:XMLLiteralpitää kääritty, kanoninen XML . Facebook on tuottanut laajennuksia PHP- ja JavaScript -kielille, jotka lisäävät XML: n ydinsyntaksiin samalla tavalla kuin E4X, nimittäin XHP ja JSX .

Historia

XML on sovellus profiilin SGML (ISO 8879).

Varhaiset digitaalisen median kustantajat ymmärsivät SGML: n monipuolisuuden dynaamisen tiedon näyttämiseksi 1980 -luvun lopulla ennen Internetin nousua. 1990-luvun puoliväliin mennessä jotkut SGML: n harjoittajat olivat saaneet kokemusta tuolloin uudesta World Wide Webistä ja uskoivat, että SGML tarjosi ratkaisuja joihinkin ongelmiin, joita Web todennäköisesti joutui kasvamaan. Dan Connolly lisäsi SGML: n W3C: n toimintojen luetteloon, kun hän liittyi henkilöstöön vuonna 1995; työ alkoi vuoden 1996 puolivälissä, kun Sun Microsystemsin insinööri Jon Bosak kehitti peruskirjan ja rekrytoi yhteistyökumppaneita. Bosakilla oli hyvät yhteydet pieneen ihmisyhteisöön, jolla oli kokemusta sekä SGML: stä että verkosta.

XML: n on koonnut yksitoista jäsenen työryhmä , jota tukee (suunnilleen) 150-jäseninen sidosryhmä. Tekninen keskustelu käytiin eturyhmien postituslistalta ja ongelmat ratkaistiin yksimielisesti tai, jos se epäonnistui, työryhmän enemmistöäänestyksellä. Michael Sperberg-McQueen kokosi 4. joulukuuta 1997. Kirja suunnittelupäätöksistä ja niiden perusteluista . James Clark toimi työryhmän teknisenä johtajana, erityisesti kirjoittamalla tyhjien elementtien <empty />syntaksia ja nimeä "XML". Muita harkittuja nimiä olivat "MAGMA" (Minimal Architecture for Generalized Markup Applications), "SLIM" (Structured Language for Internet Markup) ja "MGML" (Minimal Generalized Markup Language). Eritelmän aputoimittajat olivat alun perin Tim Bray ja Michael Sperberg-McQueen . Hankkeen puolivälissä Bray hyväksyi konsultointisitoumuksen Netscapen kanssa ja aiheutti Microsoftin äänekkäitä vastalauseita. Braya pyydettiin tilapäisesti eroamaan toimituksesta. Tämä johti kiistoihin työryhmässä, joka lopulta ratkaistiin nimittämällä Microsoftin Jean Paoli kolmanneksi aputoimittajaksi.

XML-työryhmä ei koskaan tavannut kasvokkain; Suunnittelu toteutettiin käyttämällä sähköpostin ja viikoittaisten puhelinneuvottelujen yhdistelmää. Suuret suunnittelupäätökset tehtiin lyhyen kiireisen työjakson aikana elokuun ja marraskuun 1996 välisenä aikana, jolloin julkaistiin ensimmäinen XML -määrityksen työluonnos. Suunnittelutyötä jatkettiin vuoteen 1997 saakka, ja XML 1.0: sta tuli W3C -suositus 10. helmikuuta 1998.

Lähteet

XML on ISO -standardin SGML -profiili, ja suurin osa XML: stä tulee muuttumattomana SGML: stä. SGML: stä tulee loogisten ja fyysisten rakenteiden (elementit ja kokonaisuudet) erottaminen, kielioppipohjaisen validoinnin (DTD) saatavuus, tietojen ja metatietojen (elementit ja määritteet) erottaminen, sekoitettu sisältö, käsittelyn erottaminen esityksestä ( käsittely ohjeet ) ja kulmakannattimen oletussyntaksi. SGML -ilmoitus poistettiin; XML: llä on siis kiinteä erotinjoukko ja se käyttää Unicodea asiakirjan merkkijoukkona .

Muita XML -tekniikan lähteitä olivat TEI (Text Encoding Initiative), joka määritteli SGML -profiilin käytettäväksi "siirtosyntaksina"; ja HTML , jossa elementit olivat synkronoituja resurssinsa kanssa, asiakirjan merkkijoukot olivat erillisiä resurssien koodauksesta, xml:langominaisuus keksittiin ja (kuten HTTP ) metatiedot liitettiin resurssiin sen sijaan, että niitä tarvittaisiin linkin ilmoituksessa. ISO-aiheisen Kiinan/Japanin/Korean asiakirjojen käsittelyasiantuntijaryhmän SPREAD-hankkeen (Standardization Project For Eastern East Asian Documents) ERCS (Extended Reference Concrete Syntax) -hanke oli XML 1.0: n nimeämissääntöjen perusta; SPREAD esitteli myös heksadesimaaliset numeeriset merkkiviittaukset ja viittausten käsitteen kaikkien Unicode -merkkien saattamiseksi saataville. ERCS: n, XML: n ja HTML: n tukemiseksi paremmin SGML -standardia IS 8879 tarkistettiin vuosina 1996 ja 1998 WebSGML -mukautuksilla. XML -otsikko seurasi ISO HyTimeä .

Keskustelun aikana kehittyneitä ideoita, jotka ovat uusia XML: ssä, olivat koodauksen havaitsemisen algoritmi ja koodausotsikko, käsittelyohjeiden kohde, xml: space-attribuutti ja uusi tyhjien elementtien läheinen erotin. Käsitys hyvin muotoilusta pätevyyden sijaan (joka mahdollistaa jäsentämisen ilman kaavaa) virallistettiin ensin XML: ssä, vaikka se oli toteutettu onnistuneesti Electronic Book Technology "Dynatext" -ohjelmistossa; Waterloon yliopiston New Oxford English Dictionary Project -ohjelmisto; RISP LISP SGML tekstinkäsittelylaite Uniscope, Tokio; Yhdysvaltain armeijan ohjusjohdon IADS -hypertekstijärjestelmä; Mentorin grafiikan konteksti; Interleaf ja Xerox Publishing System.

Versiot

XML: stä on kaksi nykyistä versiota:

XML 1.0

Ensimmäinen ( XML 1.0 ) määritettiin alun perin vuonna 1998. Sittemmin sitä on tarkistettu vähäisin väliajoin ilman uuden versionumeroa, ja se on tällä hetkellä viides painos, joka julkaistiin 26. marraskuuta 2008. Se on laajalti toteutettu ja edelleen suositellaan yleiseen käyttöön.

XML 1.1

Toinen ( XML 1.1 ) julkaistiin alun perin 4. helmikuuta 2004, samana päivänä kuin XML 1.0: n kolmas painos, ja on tällä hetkellä toisessa painoksessaan, joka julkaistiin 16. elokuuta 2006. Se sisältää ominaisuuksia (joitain kiistanalaisia), jotka on tarkoitettu helpottaa XML: n käyttöä tietyissä tapauksissa. Tärkeimmät muutokset ovat mahdollistaa EBCDIC- alustoilla käytettävien rivinpäätteisten merkkien käyttö sekä Unicode 3.2: sta puuttuvien komentosarjojen ja merkkien käyttö. XML 1.1 ei ole kovin laajalti toteutettu, ja sitä suositellaan käytettäväksi vain niille, jotka tarvitsevat sen erityisominaisuuksia.

Kelvolliset Unicode -merkit XML 1.0: ssa ja XML 1.1: ssä

Ennen viidennen painoksen julkaisua XML 1.0 erosi XML 1.1: stä siinä, että siinä oli tiukempia vaatimuksia elementtien ja määritteiden nimissä käytettäville merkeille ja yksilöllisille tunnisteille: XML 1.0: n ensimmäisissä neljässä versiossa merkit luetellaan yksinomaan käyttämällä tiettyä versiota Unicode- standardi (Unicode 2.0-Unicode 3.2.) Viides painos korvaa XML 1.1 -mekanismin, joka on tulevaisuudenkestävämpi, mutta vähentää redundanssia . XML 1.0: n viidennessä versiossa ja kaikissa XML 1.1: n painoksissa lähestymistapa on, että vain tietyt merkit ovat kiellettyjä nimissä ja kaikki muu saa sallia sopivat nimimerkit tulevissa Unicode -versioissa. Viidennessä painoksessa XML -nimet voivat sisältää merkkejä balilaisissa , cham- tai foinikialaisissa kirjoituksissa monien muiden Unicodeen Unicode 3.2: sta lähtien lisättyjen skriptien joukossa.

Lähes mitä tahansa Unicode -koodipistettä voidaan käyttää XML 1.0- tai 1.1 -asiakirjan merkkitiedoissa ja attribuuttiarvoissa, vaikka koodipistettä vastaavaa merkkiä ei ole määritetty Unicoden nykyisessä versiossa. Merkkitiedoissa ja attribuuttien arvoissa XML 1.1 sallii enemmän ohjausmerkkejä kuin XML 1.0, mutta "kestävyyden" vuoksi suurin osa XML 1.1: ssä käytetyistä ohjausmerkeistä on ilmaistava numeerisina merkkiviittauksina (ja #x7F - #x9F , jotka oli sallittu XML 1.0: ssa, ovat XML 1.1: ssä jopa pakollisia ilmaisemaan numeerisina merkkiviittauksina). XML 1.1: n tuettujen ohjausmerkkien joukossa on kaksi rivinvaihtokoodia, jotka on käsiteltävä välilyönninä. Välilyönnit ovat ainoita ohjauskoodeja, jotka voidaan kirjoittaa suoraan.

XML 2.0

XML 2.0: sta on keskusteltu, vaikka yksikään organisaatio ei ole ilmoittanut suunnitelmista tällaisen projektin toteuttamiseksi. XML-SW (SW for skunkworks ), jonka on kirjoittanut yksi XML: n alkuperäisistä kehittäjistä, sisältää joitain ehdotuksia siitä, miltä XML 2.0 voisi näyttää: DTD-tiedostojen poistaminen syntaksista, nimitilojen , XML- pohja- ja XML-tietojoukon integrointi pohjaan standardi.

Binaarinen XML

World Wide Web Consortiumilla on myös XML Binary Characterization Working Group, joka tutkii alustavasti XML -tietojoukon binaarikoodauksen käyttötapauksia ja ominaisuuksia. Työryhmää ei ole vuokrattu tuottamaan virallisia standardeja. Koska XML on määritelmän mukaan tekstipohjainen, ITU-T ja ISO käyttävät Fast Infoset -nimeä omalle binääritiedoilleen sekaannusten välttämiseksi (katso ITU-T Rec. X.891 ja ISO/IEC 24824-1).

Kritiikki

XML: ää ja sen laajennuksia on säännöllisesti arvosteltu monisanaisuudesta, monimutkaisuudesta ja redundanssista.

XML: n peruspuumallin yhdistäminen ohjelmointikielien tai tietokantojen tyyppijärjestelmiin voi olla vaikeaa, varsinkin kun XML: ää käytetään erittäin strukturoidun datan vaihtamiseen sovellusten välillä, mikä ei ollut sen ensisijainen suunnittelutavoite. Kuitenkin, XML sitova järjestelmien avulla sovellukset voivat käyttää XML suoraan objekteja edustavat datarakenne olevan datan ohjelmointikieli käyttää, joka takaa tyyppi turvallisuus , pikemminkin kuin käyttämällä DOM tai SAX hakea tietoja suoraan esitys XML itse. Tämä saavutetaan luomalla automaattisesti kartoitus asiakirjan XML -skeeman XSD -elementtien ja muistissa esitettävän luokan jäsenten välille.

Muut arvostelut yrittävät kumota väitteen, jonka mukaan XML on itsekuvaava kieli (vaikka itse XML-spesifikaatio ei sisällä sellaista väitettä).

JSON , YAML , ja S-ilmaisujen usein ehdotetaan yksinkertaisempaa vaihtoehtoa (katso tietojen vertailu sarjanumerointi formaatit ), jotka keskittyvät edustavat hyvin jäsennelty datalla asiakirjoja, jotka voivat sisältää sekä erittäin jäsennelty ja suhteellisen jäsentymätön sisältöä. W3C -standardoidut XML -skeemamääritykset tarjoavat kuitenkin laajemman valikoiman strukturoituja XSD -tietotyyppejä verrattuna yksinkertaisempiin sarjamuotoihin ja tarjoavat modulaarisuutta ja uudelleenkäyttöä XML -nimitilojen kautta .

Katso myös

Huomautuksia

Viitteet

Lue lisää

Ulkoiset linkit