Akselerer Innføring av XML Ordforråd

Original English version: http://xfront.com/accelerating-adoption-of-XML-vocabularies/

Lyst til å akselerere innføringen av XML vokabular? En måte er å ha en 800 pund gorilla tvinge alle til å bruke den. Men det vil fort føre til harme og opprør. En bedre måte er å lage noe som folk vil virkelig ønsker å bruke og krever ikke av dem en stor investering i tid eller penger, og lar dem starte samkjøring umiddelbart. Dette er hvordan:

  1. Når du oppretter XML vokabular, angir ikke bare betydningen av markeringen, men også dens oppførsel i programmer som behandler den.
  2. Angi konformitets regler.
  3. Opprett en testsuite.
  4. Lag et program som implementerer atferd.
  5. Validere programmet mot testsuite.
  6. Gjøre programmet tilgjengelig for hele verden.

Ideelt sett vil flere implementeringer av søknaden bli opprettet (hver med samme atferd, selvfølgelig!). På den måten kan brukerne velge en implementering basert på sin ytelse eller størrelse eller hvilke programmeringsspråk det ble implementert i.

Det er det! Gjør dette og XML vokabular kan raskt adoptert.

Eksempel: Tenk XSLT vokabular. Den XSLT spesifikasjonen angir ikke bare betydningen av hvert element og attributt men også deres oppførsel. XSLT-spesifikasjonen inneholder konformitets regler. Det er en XSLT testsuite. Et program som kalles en XSLT prosessor-er opprettet som implementerer den oppførsel som er angitt i den XSLT spesifikasjonen. Faktisk har flere implementeringer av søknaden er opprettet: Xalan, Saxon, Sableton, og andre.

La meg utdype litt mer om hva jeg mener med “å spesifisere oppførsel.” Tenk nytt XSLT. Den XSLT spesifikasjonen sier at <xsl: for-hvert> element angir en samling av noder. Det er meningen. Det sier også at et kompatibelt program må iterere over hver node identifisert ved å velge attributt (den for-hvert element har en utvalgt egenskap) og utføre elementene i <xsl: for-hvert>. Det er atferd. Således angir XSLT spesifikasjonen hvordan et program skal opptre på <xsl: for-hvert> element. Ditto for hele XSLT vokabular.

XML Schema spesifikasjonen gjør en god jobb med å spesifisere atferden til XML Schema validatorer. For eksempel, angir den at, for en elementdeklarasjons i et XML-skjema, må en validator kontrollere at XML-dokument forekomsten inneholder det riktige antall forekomster av et element og dets innhold er av den riktige type. Dermed angir det hvor validatoren må oppføre seg på XML Schema ordforråd. Så, for å “angi atferd” betyr å beskrive “for dette elementet (eller attributt) i vokabularet, må søknaden gjør dette, dette, og dette.”

Den feilen folk gjør når du oppretter en XML vokabular er at de ikke klarer å spesifisere sin oppførsel. De la det opp til “verden” for å finne ut hva problemet skal være. Et klassisk eksempel på dette er HTML. Nettleser utviklere måtte bestemme hva atferden skal være. De hadde svært varierende ideer om riktig oppførsel. Konsekvensen var at IE, Firefox og andre nettlesere alle oppførte seg annerledes. Det tok 10 år før de endelig konvergerte på en felles forståelse av atferd. Hadde HTML-spesifikasjonen uttalte atferd, forutsatt konformitets regler og en testsuite, så vi ville ha hatt identisk oppfører lesere for 10 år siden.

En ting du må vurdere når du angir atferd er dette: vil XML vokabular mates inn i programmet som en XML-dokument eller som to XML-dokumenter? (? Eller mer) La oss ta noen eksempler for å se hva jeg mener:

  • Leserprogrammer prosessen ett dokument (et HTML-dokument)
  • XML Schema validatorer behandle to dokumenter (en XML Schema-dokument og en XML-dokument)
  • XSLT-prosessorer behandle to dokumenter (en XSLT-dokument og en XML-dokument)

I disse eksemplene programmene er: nettleser, XML Schema validator, og XSLT-prosessor. Disse programmene behandle en XML vokabular. Avhengig av XML vokabular, kan en søknad krever en inngang dokument eller to inngangs dokumenter (eller mer).

Data Interoperabilitet

Jeg har ofte hørt det sagt, “For å oppnå data interoperabilitet hvert program må tolke/forstå XML vokabular på samme måte.”

Hvilken bedre måte å sikre at den samme tolkning/forståelse enn å bruke det samme programmet!

Ved å bruke det samme programmet kan vi ha perfekt data interoperabilitet. MERK: Når jeg sier “det samme programmet” mener jeg et sett med implementeringer. Således Xalan, Saxon, og Sabletron er alle de samme applikasjons de er alle XSLT- prosessorer. Bruke samme søknad betyr ikke, for eksempel at alle bruker Xalan. Én person kan bruke Xalan, en annen bruker Saxon, og en annen Sabletron. Det er ok; de har alle den samme atferd; de alle følger XSLT konformitets regler; de alle passere XSLT testsuite.

Her er et eksempel for å illustrere hvordan interoperabilitet data oppnås gjennom felles bruk av det samme programmet.

Eksempel: Tenk XSLT. Jeg kan lage en XSLT-dokument og kjøre det på min XSLT-prosessor. Jeg kan sende XSLT-dokument til deg og du kjører den på XSLT-prosessor. Vi får det samme problemet. Vi er enige perfekt på hva <xsl: for-hver> element betyr og hvordan det skal oppføre seg. Ditto for alle andre elementer og attributter i XSLT vokabular. Vi har med hell interoperated. Hva aktivert denne? Svar: Hva gjorde at interoperabilitet er det faktum at vi bruker det samme programmet. (Igjen, jeg må understreke at det ikke betyr at vi bruker den samme gjennomføringen av programmet, og du kan bruke Xalan og jeg kan bruke Saxon, det er greit,. De er begge XSLT-prosessorer)

Jeg kan lage en ny XSLT-dokument og sende det til deg. Igjen har vi perfekt interoperabilitet. Og en tredje XSLT-dokument. Og så videre. XSLT-prosessor program forenkler løse annen XSLT forvandler opprettes, utvekslet og utført med perfekt forståelse/interoperabilitet.

Oppsummering

Her er de viktigste punktene:

  1. Når du oppretter en XML vokabular, angi oppførselen til XML vokabular. Angi konformitetskrav. Opprett en testsuite. Implementere konform programmer, hvert med samme virkemåte (implementeringene kan variere i størrelse, ytelse, programmeringsspråk, etc). Alle bruker implementeringer.
  2. Data interoperabilitet er ikke oppnådd gjennom felles forståelse av XML vokabular. Data interoperabilitet oppnås gjennom felles bruk av XML vokabular søknad.
  3. Opprette en XML vokabular uten å spesifisere sin oppførsel er en dårlig idé. Det er en oppskrift for forsinket data interoperabilitet i beste fall, mislyktes data interoperabilitet i verste fall.