Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

31.1. XSL Tranformatie (XSLT)

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

XML is, in tegenstelling tot HTML, geen presentatie markup taal, maar wordt eerder gebruikt om hierarchische data mee te representeren.
We kennen allemaal de typische tekstuele presentatie van XML informatie, bijvoorbeeld :
XML Instantie
<?xml version="1.0"?>
<products>
  <product>
    <name>Tshirt</name>
    <price>4.99</price>
  </product>
  <product>
    <name>Sweater</name>
    <price>19.99</price>
  </product>
</products>
Van meerdere produkten worden hier de naam en prijs bijgehouden.

Presentatie tools, als webbrowsers, weten daarom nog niet, althans zonder bijkomende informatie, hoe deze data op een andere - dan een tekstuele - manier te gaan presenteren.

Misschien wil je deze data in een webbrowser wel op een visueel aantrekkelijkere manier als de volgende voorstellen :
Products
Name Price
Tshirt 4.99
Sweater 19.99
En moet dus voor het presenteren van de XML data eerst een omzetting naar HTML gebeuren :
HTML
<html>
  <body>
    <b>Products</b>
    <table border="1">
      <tr bgcolor="yellow">
        <th>Name</th>
        <th>Price</th>
      </tr>
      <tr>
        <td>Tshirt</td>
        <td>4.99</td>
      </tr>
      <tr>
        <td>Sweater</td>
        <td>19.99</td>
      </tr>
    </table>
  </body>
</html>
Hoe deze omzetting of transformatie van XML naar HTML kan gebeuren, of met ander woorden hoe je kan aangeven op welke manier de data uit XML informatie op een andere - dan puur tekstuele - manier kan worden gepresenteerd, kan je aangeven via XSLT (eXtensible Stylesheet Language Transformation).

XSLT is dus een taal die aangeeft hoe bepaalde XML informatie bijvoorbeeld naar HTML kan worden omgezet.  XSLT wordt zelf ook in XML vorm (<?xml version="1.0"?>) opgesteld en gebruikt elementen en attributen uit de http://www.w3.org/1999/XSL/Transform namespace :
XML Transformation
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <html>
      <body>
        <b>Products</b>
        <table border="1">
          <tr bgcolor="yellow">
            <th>Name</th>
            <th>Price</th>
          </tr>
          <xsl:for-each select="products/product">
            <tr>
              <td>
                <xsl:value-of select="name"/>
              </td>
              <td>
                <xsl:value-of select="price"/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
Een synoniem voor het gebruikte <xsl:stylesheet> element is het <xsl:transform> element.  Er is geen enkel onderscheid tussen de twee.

Bemerkt hoe bij de verwijzing naar de namespace (met URI "http://www.w3.org/1999/XSL/Transform") ook aangeduid wordt hoe de elementen en attributen uit deze namespace uit versie 1.0 komen (version="1.0").

Een grondige verklaring van de gebruikte XSLT elementen vind je verderop.  Maar je merkt alvast hoe XSLT gebruikt kan worden om onderdelen van het XML brondocument aan te duiden die moeten matchen met één of meerdere definiëerde templates.
Als deze matchen gevonden worden zal XSLT deze omzetten en invoegen in het resulterende document.

XSLT kan over het algemeen gebruikt worden om elementen of attributen aan de bron XML toe te voegen of elementen of attributen uit de bron XML te filteren.  Men kan de informatie uit de bron XML herarrangeren of sorteren.  Aan de hand van voorwaardes kan men laten beslissen welke elementen of attributen moeten worden weergegeven.

Doorgaans zit een XSLT document in een bestand met de extensie .xsl of .xslt.

Om in het XML document zelf aan te geven dat voor de presentatie bovenstaande style sheet wordt gebruikt, neem je de processing instruction <?xml-stylesheet type="text/xsl" href="products.xsl"?> op.  Dit natuurlijk in de veronderstelling dat hiervoor vermelde XSLT in zich in een bestand bevindt met de naam products.xsl :
XML Instantie
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="products.xsl"?>
<products>
  <product>
    <name>Tshirt</name>
    <price>4.99</price>
  </product>
  <product>
    <name>Sweater</name>
    <price>19.99</price>
  </product>
</products>
Alle bekende browsers zoals Chrome, Firefox (vanaf versie 3 of hoger), Internet Explorer ( vanaf versie 6 of hoger), Opera (vanaf versie 9 of hoger) en Apple Safari (vanaf versie 3 of hoger) hebben ondersteuning voor XML en XSLT.
Ga je dus in dergelijke browser het hiervoor vermelde XML document openen, dan zal de HTML tranformatie worden getoond.

Naast een beschrijving hoe XML naar HTML kan worden omgezet kan XSLT ook aangeven hoe de XML naar XML in andere vorm kan worden omgezet.
Misschien wil je bovenstaande XML informatie omzetten in volgende vorm :
XML Instantie
<?xml version="1.0"?>
<products>
  <product name="Tshirt">4.99</product>
  <product name="Sweater">19.99</product>
</products>
Om deze omzetting te verduidelijken zou je volgende XSLT kunnen gebruiken :
XML Transformation
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="products">
    <xsl:for-each select="product">
      <xsl:element name="product">
        <xsl:attribute name="name"><xsl:value-of select="name"/></xsl:attribute>
        <xsl:value-of select="price"/>
      </xsl:element>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
Of misschien wil je het eerst vermelde XML document wel tranformeren of presenteren in volgende eenvoudige tekstvorm :
Tekst Bestand
Products:
- Tshirt (4.99)
- Sweater (19.99)
Deze transformatie kan je definiëren via volgende XSLT :
XML Transformation
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:template match="products">
    Products :
    <xsl:for-each select="product">
      - <xsl:value-of select="name"/> : <xsl:value-of select="price"/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
Bemerk hoe het <xsl:output> element gebruikt wordt om via het method attribuut aan te geven naar wat ("html", "xml" of "text") de bron XML moet worden getransformeerd.  Aan de hand van het indent attribuut die men op "yes" of "no" kan instellen geef je aan of er "indentatie" wordt gebruikt.  Uiteraard is dit slechts van toepassing voor method "html" en "xml".

XSLT is een onderdeel van XSL, dat ook nog bestaat uit XPath, die een taal is om te navigeren in XML informatie.  Het zijn hier XPath expressies die gebruikt worden in de hiervoor vermelde XSLT documenten om in de attributen match en select aan te geven welk onderdeel van de bron XML men wil koppelen aan een bepaalde template (match attribuut van het <xsl:template> element) en welke informatie men uit deze onderdelen wil selecteren om te gebruiken in het resultaat document (select attribuut van verschillende xsl elementen).

XSLT is een W3C (World Wide Web Consortium) recommendation sedert eind 1999 en is het belangrijkste onderdeel van XSL.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.