gleicher XPath-Ausdruck führt zu unterschiedlichen Ergebnissen in XSLT!!!

20/05/2008 - 20:54 von Thomas | Report spam
Hallo zusammen,

ich übe gerade XSLT und stehe vor einem Ràtsel:

Gleicher XPath-Ausdruck führt zu unterschiedlichen Ergebnissen als
reiner XPath-Ausdruck und in einem XSLT Dokument.

Hier mein Code:

XML-Dokument

<?xml version="1.0" encoding="ISO-8859-1"?>

<test>
<text>Was du <zeit>heute</zeit> kannst besorgen, das verschiebe
nicht auf <zeit>morgen</zeit>!</text>
</test>



Reine XPath-Abfrage

/test/text/child::*
bzw.
/test/text/descendant::*

beide liefern wie erwartet:
<zeit>heute</zeit>
<zeit>morgen</zeit>


XSLT-Dokument

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates />
</body>
</html>
</xsl:template>

<xsl:template match="text">
<p style="font-family:Tahoma; font-size:18px">
<xsl:apply-templates />
</p>
</xsl:template>

<xsl:template match="test/text">
<i style="color:red">
<xsl:value-of select="/test/text/child::*"/>
<!--<xsl:value-of select="/test/text/descendant::*"/>-->
</i>
</xsl:template>

</xsl:stylesheet>

Das XSLT-Dokument liefert mir aber nur das erste Element:

<html><body>
<i style="color:red">heute</i>
</body></html>

Warum bekomme ich denn unterschiedliche Ergebnise?

Danke vorab

Gruß
Thomas

PS: Editor Stylus Studio 2006
 

Lesen sie die antworten

#1 Bjoern Hoehrmann
20/05/2008 - 21:06 | Warnen spam
* Thomas wrote in microsoft.public.de.german.xml:
^^^^^^
Hier sollte dein ganzer Name stehen, das ist hier so üblich und gilt
allgemein als höflich.

<xsl:template match="test/text">
<i style="color:red">
<xsl:value-of select="/test/text/child::*"/>
<!--<xsl:value-of select="/test/text/descendant::*"/>-->
</i>
</xsl:template>

Das XSLT-Dokument liefert mir aber nur das erste Element:



Nun, xsl:value-of nimmt immer nur ein Element aus einer Knotenmenge,
und da du nur ein text-Element hast, kommt dann auch nur eins raus.
Wenn du statt xsl:value-of xsl:copy-of nimmst, bekommst du beide.
Björn Höhrmann · mailto: · http://bjoern.hoehrmann.de
Weinh. Str. 22 · Telefon: +49(0)621/4309674 · http://www.bjoernsworld.de
68309 Mannheim · PGP Pub. KeyID: 0xA4357E78 · http://www.websitedev.de/

Ähnliche fragen