Komme i gang med XSL (T)

I denne opplæringen vil vi eventyrere inn i verden av XSL (T) og forklare hva det er, hvordan å trekke data fra et XML-dokument, grunnleggende iterasjon og grunnleggende innlogging og betingede uttalelser.

Opplæringsdetaljer

  • Program: Enhver tekstredigerer
  • Versjon: 1 av 1
  • Vanskelighet: Medium
  • Anslått sluttid: 25min

Oversikt

Noen ganger har du store datasett som blir analysert som XML som må formateres slik at noen som ikke vet hvordan de skal lese XML, kan lese dataene. I denne opplæringen vil jeg vise deg hvordan det gjøres med kraften til XSL (T).

Hva er XSL (T)?

XSL (T) er kort for Extendable Stylesheet Language (Transformation). Selv om det er et stilark, har det et annet mål enn CSS (Cascading Stylesheets). XSL (T) brukes ikke for visuell effekt, men i stedet utvinning av data (eller transformering) fra XML og bruk av kombinasjonen av HTML og CSS for å formatere dem. XSL (T) har også de dynamiske egenskapene i den forstand at du kan gjøre iterasjon og betingede setninger på en statisk XML-fil.

XSL (T) brukes ikke for visuell effekt, men i stedet utvinning av data (eller transformasjon) fra XML og bruk av kombinasjonen av HTML og CSS for å formatere dem.

Hvorfor bruke XSL (T)?

XSL (T) kan brukes til å organisere store trær av XML slik at alle kan lese det. For eksempel tjener en Google Search Appliance spørsmål som XML. For at XML skal leses av en generell bruker, må det forekomme en transformasjon. Dette er hvor XSL (T) spiller en viktig rolle. Det kan også brukes til å utforme en RSS feed side siden kilden er alt i XML. Det brukes også som det viktigste templerende språket for Autonomy's Teamsite (EMS) og slike open source CMSs som symfoni.

XSL (T) kutter også ned på serverbelastning. Siden XSLT kan gjøre omformingen på klientsiden, må serveren din gjøre mindre arbeid, siden du ikke spør etter data i databasen. JavaScript og server-side funksjoner kan være oppsett for å fortelle dokumentet å bruke en bestemt XSL (T) mal, eller du kan kildemalen i selve XML-filen. For denne opplæringen skal vi ganske enkelt kilde XSL (T) -malen i XML-filen.

Starter

Målet vårt er å lage en liste over ferier som vi vil fortsette, og utføre noen logikk på dataene for å fortelle oss hvilke destinasjoner som er utenfor vårt prisklasse. I dette tilfellet vårt budsjett er $ 999 for ferien, og vi skal indikere når prisen er over vårt budsjett. Vi vil også bestille dem i synkende rekkefølge, slik at vi umiddelbart kan se hvilke turer som er ute av budsjettet.

Først må du ha en XML-fil. Gå videre og åpne din favoritt tekstredigerer og opprett en ny fil og ring den trips.xml. Jeg har gitt en XML-fil som du kan laste ned og bruke, eller du kan kopiere og lime inn koden under.

   Mine ferier  USA Florida Orlando 1000   USA Michigan Detroit 600   Spania Madrid 5000   USA California San Jose 800  

Det første og eneste vi trenger å gjøre med dette dokumentet er å legge til en referanse til hvor vår .xsl-fil lever. I dette tilfellet oppretter vi et stilark som heter trips.xsl.

  ... 

Begynner det utvidbare stilarket

Begynn med å opprette et nytt dokument i din favoritt tekstredigerer og lagre det som trips.xsl. Deretter kan vi starte det aktuelle stilarket. Du må først angi XML-versjonen og kodingen for malen. Hvis du er kjent med XML, er det samme versjon og kodende syntaks

 ... 

Herfra kan vi dykke inn i å skrive noen XSL. For å starte stilarket må vi først la nettleseren vite at vi bruker et XSL-stilark og hvilken versjon. Dette elementet må vikle opp alt ditt merke og bør lukkes ut på slutten av dokumentet, ellers vil dokumentet ikke forvandle seg.

    ... 

Hvis vi skal validere XHTML i vårt dokument mot W3C-standarder, må vi da inkludere en doktype som skal brukes ved transformasjon og gjengivelse. Her skal vi bruke XHTML Strict DTD. Vi gjør dette ved å sette opp et selvlukkende element kalt xsl: Utgang. Med det elementet vil vi ringe doktypen.

     ... 

Deretter starter vi den faktiske malen. I mellom er malen åpen og lukkende tag hvor alt ut XHTML vil gå sammen med andre XSL (T) elementer. Det er viktig å merke seg at du har satt a kamp for malen. Denne egenskapen sier i utgangspunktet å gå til roten til XML-dokumentet.

       

Transformation

Første ting vi trenger å gjøre nå, er å starte opp en grunnleggende XHTML-oppsett og hekke det i vår xsl: mal tags. Jeg har også koblet en css-fil for å dokumentere for å gi dokumentet litt stil, men å sette opp det er utenfor omfanget av denne opplæringen.

...          ... 

Så vårt første mål er å ta tittelelementet fra XML-dokumentet og plassere dataene i tittelen på html-dokumentet.

Før vi begynner med XSL, er det viktig å merke seg hvor i XML-treet "tittel" eksisterer. I dette tilfellet er tittelen en direkte etterkommer av roten av ferie. Vi kan nå begynne å skrive vår XSL. For å kunne fortelle nettleseren der et samsvarende data skal leve bruker vi xsl: verdi av elementet.

Vi er i roten til dokumentet allerede gjennom xsl: mall-taggen, men vi må grave dypere inn i XML-treet for å velge de dataene vi ønsker. I dette tilfellet skal vi se i dokumentet for et rotelement av ferie med barn av tittel.

...  <xsl:value-of select="vacation/title"/>  ... 

Når vi går til å åpne vår XML-fil (trips.xml) i nettleseren, er resultatet vårt tittelelementet som vises i tittellinjen til nettleseren, der vi forventer at det skal være på et vanlig XHMTL-basert nettsted. Legg merke til at vi ikke lenger ser XML-strukturen, men når vi ser kilde, ser vi at kilden til dokumentet er XML.

Vi kan ta det et skritt videre for å bevise at transformasjonen fra XML til XHTML har skjedd i nettleseren ved hjelp av et verktøy som FireBug eller Safari Inspector.

For å legge til en vis visuell organisasjon skal jeg legge til noe oppslag slik at dataene våre er litt enklere å se på.

...   

...

Som du kan se over, har jeg gjenbrukt tittelelementet igjen, men denne gangen i dokumentets kropp. Dette kan være svært nyttig når det gjelder gjenbruk og gjenbruk av innhold.

Deretter skal vi transformere våre "turer" til XHTML. Sunn fornuft sier at vi bare skal kunne ringe en annen xsl: value-of men denne gangen påkaller barnet noden til "tur". Dette ville fungere hvis vi bare hadde en tur. Men siden vi har flere turer må vi gjøre litt iterasjon eller looping gjennom XML-dokumentet.

Iterasjon aka Looping

Som i alle programmeringsspråk er det iterasjonsopplysninger som går gjennom et bestemt datasett og utfører noen metoder på dem. XLS (T) har lignende funksjonalitet ved å utvinne data fra et XML-dokument.

... ... ... 

Utsnittet ovenfor gjør ganske mye hva du forventer å gjøre. Det sier xsl: for-hvert element velg alt som eksisterer på banen ferie / tips.

For å faktisk trekke ut dataene må vi imidlertid gjøre litt mer arbeid. Siden budsjettet for turene er $ 999, må vi preforme noen logikk på dataene. Men før vi gjør det, kan vi sortere dataene etter pris i synkende rekkefølge.

Sortering

...  ... ... 

Som du kan se over sortering av data med en bestemt node, er det ganske enkelt. Siden xsl: for-hvert setningen velger turenummeret og angir omfanget vi bare kan fortelle xsl: sort å velge prisnoden og se etter data-type Nummer sett deretter rekkefølge til synkende. Det er viktig å merke seg at xsl: sort erklæringen er selvlukkende ().

forhåndsvisning

Vel på dette tidspunktet kan du lure på hva denne ferieoppføringen ser ut som. For å forhåndsvise hva vi har åpnet trips.xml i nettleseren din. Pass på at du ikke ser på .xsl fil.

Du klipper sannsynligvis på hodet ditt og lurer på hvorfor vi ikke har noen resultater. Dette skyldes at vi ikke har hentet hvilke data som skal sees på. De xsl: sort erklæring er ikke sourcing data det er rett og slett et filter for når data er til stede.

Velge og teste

Siden vi ønsker å gi noen indikasjon på priser som er ute av budsjettet, må vi Test mot noen parametere. Vi gjør dette med kombinasjonen av xsl: velg, xsl: når test = " og xsl: ellers. Hvis du har noen programmeringserfaring, bør du gjenkjenne dette konseptet med flytkontroll av tilstandsbetingelser. Hvis ikke, er det fortsatt ganske enkelt å følge.

     BLAH   blip   

Vi starter logikkflyten med xsl: velg, Dette kommer til å initialisere setningen ligner på hvis på språk som PHP. Rett etter det har vi vår første test. Vi forteller XSL (T) til det når prisen er større enn (>) 999 gjør BLAH, ellers gjør BLIP.

Deretter må vi erstatte BLAH og BLIP med kroker til XML.

...   
  • $ ,   
  • ...
    ...

    I det ovennevnte kuttet setter vi opp vårt artikkel med en klasse for "for mye". Denne klassen vil fargere turene som ut av budsjettet i rødt. Vi bruker da xsl: value-of å ta tak i prisen, byen, staten, landet og datoen. Det er viktig å merke seg at datoen kan være tilgang fra hver "tur" knutepunkt ved hjelp av @ symbolet. Disse samme type uttalelser ble sett tidligere da du fikk tittelen på vår liste. Vi har også lagt til dollarsymbolet ($) og komma () for å formatere dataene riktig.

       
  • $ ,   
  • $ ,   
  • Vi må nå angi hva vi vil skje med de andre elementene hvis de møter vår begrensning på under $ 999. I dette tilfellet skal vi bare skrive ut dem i en liste med ingen spesiell klasse knyttet til dem. Vi går gjennom og velger alle de samme noder som vi gjorde for for mye noder (pris, by, stat, land og dato).

    Putting It All Togeather

           <xsl:value-of select="vacation/title"/>    

    • $ ,   
    • $ ,   

    På denne tiden bør vi faktisk ha noe nyttig å se på i nettleseren.

    Åpne opp trips.xml som før. Hvis alt har gått bra, bør du ha noe som ligner på det som vises ovenfor. XSL (T) er et svært kraftig språk som lar deg drastisk endre hvordan XML-data presenteres. Nedenfor er det noen ressurser for å lære mer om XSL (T).

    • W3C-dokumentasjon
    • W3C Skoler XSL
    • XSLT Wikipedia
    • XSLT andre utgave av Doug Tidwell

    Skriv en Plus Tutorial

    Visste du at du kan tjene opp til $ 600 for å skrive en PLUS-opplæring og / eller screencast for oss? Vi leter etter dybde og velskrevne opplæringsprogrammer om HTML, CSS, PHP og JavaScript. Hvis du er i stand til å kontakte Jeffrey på [email protected].

    Vær oppmerksom på at faktisk kompensasjon vil være avhengig av kvaliteten på den endelige opplæringen og screencast.

    • Følg oss på Twitter, eller abonner på Nettuts + RSS-feed for de beste webutviklingsopplæringene på nettet.