Hop til teksten

IT FJERNUNDERVISNING
- IT kurser når Du har tid!

xsl:element

Vi har set, hvordan vi kan generere nye xml dokumenter gennem xsl transformationer, men hvis vi vil have elementnavne i det nye xml dokument, der afhænger af indholdet af det oprindelige xml dokument skal vi have fat i xsl:element. Syntaksen er som følger:

<xsl:element name="element navn"
use-attribute-sets="attributset navn"
namespece="namespaceuri" />

Og et lille eksempel

<xsl:element name="blabla">En lille tekst</xsl:element>

Vil give dette resultat

<blabla>En lille tekst</blabla>

Det er jo ikke specielt sjovt, men vi kan også skrive

<xsl:element name="{.}">En lille tekst</xsl:element>

Kører man dette mod

<Navn>Andrea</Navn>

Vil man få

<Andrea>En lille tekst</Andrea>

ud. Det er i sagens natur vigtigt at indholdet af de elementer man vil bruge som elementnavne er lovlige XML navne - ellers går det galt.

 

Et lille eksempel - først et xml dokument:

<?xml version="1.0" encoding="UTF-8"?>
<Tagnames>
 <Root>Track</Root>
 <Elements>
  <Element>CD</Element>
  <Element>Artist</Element>
  <Element>CD-Title</Element>
 </Elements>
</Tagnames>

 

og dernæst et stylesheet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" version="1.0" indent="yes"/>
 
 <xsl:template match="/">
  <Music><xsl:apply-templates select="Tagnames/Root"/></Music>
 </xsl:template>
 
 <xsl:template match="Root">
  <xsl:element name="{.}"><xsl:apply-templates select="following-sibling::Elements/Element"/>
</xsl:element>
 </xsl:template>
 
 <xsl:template match="Element">
  <xsl:element name="{.}">bla bla</xsl:element>
 </xsl:template>
 
</xsl:stylesheet>

Når du har betalt for kurset får du adgang til øvelser til hver lektion. Og når du har fået godkendt din besvarelse får du desuden adgang til mine løsningsforslag med ekstra tips og trix.