|
|||||
|
Velkommen IntroXML Brushup Hvad er XMLXML Formatering med CSS XML Transformation med XSL Document Type Definition XML Schemas Document Object Model Simple API for XML XML og web Formatering med CSSGrundlæggende XSLT XSL IntroduktionDet grundlæggende XPath XPath intoDokumentets rod Filtrering med XPath XPath funktioner XPath aksenavne XSLT elementer xsl stylesheetxsl template xsl apply-templates xsl value-of xsl output xsl element xsl attribute xsl text xsl if og xsl choose xsl for-each xsl copy og xsl copy-of Sortering Modes IntroduktionDiverse VariableParametre Navngivne templates XML Værktøjer og ressourcer Værktøjer og ressourcer |
XML formatering og transformation / XSLT elementer / xsl element |
||||
XSL fjernundervisningskursus- Vil du gerne på kursus NU? - Vil du gerne lære i dit eget tempo? - Har du ikke tid til at tage på kursus ude i byen? Så køb et kursus i XSL som fjernundervisning på www.it-fjernundervisning.dk |
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>
Prøv at lave et XML dokument, der ser sådan her ud ved hjælp af xls:element (spørg mig ikke hvad det skal bruges til):
<?xml version="1.0" encoding="ISO-8859-1"?>
<CD>
<Queen>Live at Wembley '86</Queen>
<Queen>Live at Wembley '86</Queen>
<Queen>A Night at the Opera</Queen>
<Queen>Queen II</Queen>
<Queen>A Night at the Opera</Queen>
<Queen>Queen</Queen>
<Queen>Queen II</Queen>
<Sting>The Dream of the Blue Turtles</Sting>
</CD>
Det er vigtigt at du filterer, så det kun er de to kunstnere, der bliver vist, da de andre kunsternavne ikke kan bruges som XML element navne.