Sök…


Anmärkningar

XSLT (XSL Transformations, Extensible Stylesheet Language Transformations) är ett programmeringsspråk som är baserat på XML och vars syfte är att manipulera och transformera XML. Det är ett funktionellt programmeringsspråk och en W3C-standard. Med XSLT kan du omvandla ett eller flera XML-dokument till ett resultat som kan ha olika utdataformat (XML, HTML, text).

För att förstå XSLT - är det bäst att ha god kunskap om:

  1. XML
  2. XPath

Utan dessa två underliggande koncept skulle du ha svårt att lära dig XSLT. För det första eftersom ett XSLT-dokument är ett XML-dokument. Och för det andra använder XSLT-dokument XPath för att fråga XML-dokumentet som transformeras.

Rekommenderad läsning: https://sv.wikipedia.org/wiki/XSLT

versioner

Version Specifikation Status Utgivningsdatum
XSLT 1.0 https://www.w3.org/TR/xslt Rekommendation 1998/08/18
XSLT 2.0 https://www.w3.org/TR/xslt20 Rekommendation 2007-01-23
XSLT 3.0 https://www.w3.org/TR/xslt-30 Kandidatrekommendation 2015/11/19

Installation eller installation

XSLT är ett speciellt programmeringsspråk; det används ofta för att omvandla XML-dokument antingen till ett annat XML-format, till HTML eller till textbaserade format.

Det finns två huvudversioner av XSLT som används: XSLT 1.0 och XSLT 2.0. XSLT 1.0 är mer omfattande implementerat men har många begränsningar och begränsningar jämfört med XSLT 2.0; måste du bestämma vilken version du ska använda. Om en XSLT 2.0-processor är tillgänglig för din valda miljö, är detta nästan alltid det bättre valet.

(XSLT 1.0 kom ut i november 1999, och många implementationer dök upp inom ett år eller två, både från mainstream-leverantörer som Microsoft, IBM, Sun och Oracle, och från enskilda entusiaster som arbetade på fritiden. XSLT 2.0 kom ut i januari 2007 och många av de ursprungliga 1.0-processorerna uppgraderades aldrig, eftersom deras utvecklare hade tappat intresset. Den mest använda XSLT 2.0-processorn är Saxon, men det har inte fältet för sig själv: andra fristående produkter inkluderar RaptorXML (från Altova ), XmlPrime (från CBCL) och Exselt och 2.0-processorer finns också tillgängliga inbäddade i IBMs WebLogic, i MarkLogics XML-databaseserver och i Intels XML Accelerator.)

Specifikationen för XSLT 3.0 är tekniskt fullständig (Föreslagen rekommendation i april 2017) men betraktas bäst som blödande kant för närvarande: Tänk bara på det om du har ett pressande behov av dess nya funktioner, som strömning, paket, JSON-support , eller prova / fånga. Det finns tre kända implementationer: Saxon, Exselt och RaptorXML.

För att komma igång med XSLT har du flera alternativ:

  • Använd ett XSLT-verktyg online. Det finns flera tillgängliga (sök efter "online XSLT-verktyg"), en mycket tillförlitlig online-IDE är http://xsltransform.net/ . Detta är ett bra sätt att få en första känsla för språket, men du vill inte fortsätta på detta sätt när du har gjort en riktig utveckling.

  • Använd XSLT-motorn inbyggd i varje webbläsare. Liksom med onlineverktyg har dessa fördelen att du inte behöver installera någonting; men webbläsarna stöder bara XSLT 1.0, de stöder bara XML-till-HTML-konvertering och de har mycket svagt felsökningsstöd. En mycket ny - men ändå experimentell - utveckling är Saxon-JS, som tillåter exekvering av XSLT 2.0 (och delar av XSLT 3.0) i webbläsaren.

  • Installera en XSLT-processor (t.ex. Saxon eller xsltproc). De flesta av dessa produkter kan åberopas med operativsystemets kommandorad eller med ett API för speciella programmeringsspråk som Java, C, C # eller Python.

  • Installera en XML-utvecklingsmiljö som Altova XML Spy, oXygen från SyncroSoft eller Stylus Studio. Även om detta är ett dyrare alternativ, ger det mycket rikare utvecklingsstöd och felsökningskapacitet.

Oavsett vilket alternativ du väljer bör du först bestämma om du vill använda XSLT 1.0 eller XSLT 2.0.

Enkelt XSLT-exempel

Här är ett enkelt exempel som använder XSLT för att konvertera data i en XML-fil till en tabell i en HTML-fil. Du kan använda den för att experimentera med enkla XSLT-omvandlingar.

Förutsättning: Installera en Java Runtime-miljö och lägg till JRE-platsen till din PATH-variabel. (I Windows lägger de flesta installatörer Java till din sökväg åt dig.) Om det här fungerar bör du kunna öppna ett kommandoradsfönster och köra kommandot java -version och få en utskrift av information om din JRE.

  1. Ladda ner Saxon-HE XSLT-processor för Java här: saxon.sourceforge.net och packa upp den var som helst på din dator.
  2. pets.xml en fil med namnet pets.xml med följande kod:
  <pets>
  <petType name="Dogs">
    <pet id="123" name="Sparky" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="234" name="Sadie" vaccineStatus="unvaccinated" healthStatus="sick"/>
    <pet id="345" name="Herman" vaccineStatus="unvaccinated" healthStatus="unknown"/>
  </petType>
  <petType name="Cats">
    <pet id="456" name="Cleo" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="567" name="Janet" vaccineStatus="unvaccinated" healthStatus="healthy"/>
    <pet id="678" name="Furry" vaccineStatus="vaccinated" healthStatus="sick"/>
  </petType>
</pets>
  1. petTransform.xsl en fil med namnet petTransform.xsl med följande kod:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

<!-- handle the root XML element -->
<xsl:template match="/">
<html><head>
  <title>Pets that are available for adoption</title>
</head>
<body>
  <xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="pets">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="petType">
<h2><xsl:value-of select="@name"/></h2>
<table id="{@name}">
   <tr>
     <th colname="id">ID</th>
     <th colname="name">Name</th>
     <th colname="vaccinated">Vaccine status</th>
     <th colname="health">Health status</th>
   </tr>
   <tbody>
     <!-- add a row for each pet in this category -->
     <xsl:for-each select="pet">
       <tr>
         <td colname="id"><xsl:value-of select="@id"/></td>
         <td colname="name"><xsl:value-of select="@name"/></td>
         <td colname="vaccinated"><xsl:value-of select="@vaccineStatus"/></td>
         <td colname="health"><xsl:value-of select="@healthStatus"/></td>
       </tr>
     </xsl:for-each>
   </tbody>
 </table>
</xsl:template>

<!-- ignore the content of other tags because we processed them elsewhere -->
<xsl:template match="*">
<!-- do nothing -->
</xsl:template>

</xsl:stylesheet>
  1. Öppna ett kommandoradsfönster och gå till mappen med XML- och XSLT-filerna.
  2. Kör följande kommando, där path_to_saxon.jar är den fulla sökvägen till filen saxon9he.jar :
java -jar "path_to_saxon.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt

Till exempel:

java -jar "C:\Program Files\SaxonHE9-7-0-7J\saxon9he.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt

Se till att köra det här kommandot på en enda rad.

  1. Öppna petOutput.html i en textredigerare. Det ska se ut så här:
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Pets that are available for adoption</title>
   </head>
   <body>
      
      <h2>Dogs</h2>
      <table id="Dogs">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">123</td>
               <td colname="name">Sparky</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">234</td>
               <td colname="name">Sadie</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">sick</td>
            </tr>
            <tr>
               <td colname="id">345</td>
               <td colname="name">Herman</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">unknown</td>
            </tr>
         </tbody>
      </table>
      
      <h2>Cats</h2>
      <table id="Cats">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">456</td>
               <td colname="name">Cleo</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">567</td>
               <td colname="name">Janet</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">678</td>
               <td colname="name">Furry</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">sick</td>
            </tr>
         </tbody>
      </table>
      
   </body>
</html>
  1. Öppna petOutput.html i en webbläsare. Det bör visa data i en enkel tabell.


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow