Namespace Attribute mit XPATH auswerten
Andreas
- xsl
0 Thomas J.S.0 Andreas
Hallo,
Gegeben sei dieses XML Fragment :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform
xmlns:it="urn:foo:it"/>
...
<mitarbeiter id="2" it:alter="25">
<nachname>Meier</nachname>
<telefon>3421</telefon>
</mitarbeiter>
...
Jetzt möchte ich mittels XPATH alle Mitarbeiter, die 25 sind, extrahieren und weiterverarbeiten :
....
<xsl:if test="//mitarbeiter[@it:alter='25']">
....
Xalan ignoriert diesen XPath-Ausdruck aber vollkommen. Wo liegt also mein Denkfehler und wie sieht die richtige Lösung aus ?
Danke im voraus !
Hallo,
<xsl:stylesheet version="2.0"
Jetzt möchte ich mittels XPATH alle Mitarbeiter, die 25 sind, extrahieren und weiterverarbeiten :
....
<xsl:if test="//mitarbeiter[@it:alter='25']">
Xalan ignoriert diesen XPath-Ausdruck aber vollkommen. Wo liegt also mein Denkfehler und wie sieht die richtige Lösung aus ?
Ich kann den Fehler nicht nachvollziehen.
Weder mit Xalan-J (Xalan unterstüzt übrigens nur Version 1.0 von XSLT, was aber in diesem Fall keine Rolle spielt) noch mit Saxon, noch mit anderen XSLT 2.0 kompatiblen Prozessoren.
Ich habe jetzt einen kleinen Test gemacht mit 5 <mitarbeiter> davon zwei mit "@it:alter='25'", alle Prozessoren, so auch Xalan liferten das richtige Ergebniss. (Zusätzlich ließ ich mir die prozessorspezifische Informationen ausgeben):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:it="urn:foo:it">
<xsl:template match="/">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<xsl:for-each select="//mitarbeiter[@it:alter='25']">
<strong><xsl:value-of select="@id" /></strong><br />
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Saxon 8:
---------
XSL Version: 2.0
XSL Prozessor-Hersteller: SAXON 8.0 from Saxonica
Hersteller URL-Adresse: http://www.saxonica.com/
Xalan, eingebunden in Oxygen:
---------
XSL Version: 1
XSL Prozessor-Hersteller: Apache Software Foundation
Hersteller URL-Adresse: http://xml.apache.org/xalan-j
XMLSpy
-----------
XSL Version: 2.0
XSL Prozessor-Hersteller: Altova GmbH
Hersteller URL-Adresse: http://www.altova.com
Wie gesagt, alle lieferten das richtige.
Wenn bei dir das nicht klappt, muss du mehr von deinem XSL zeigen.
Grüße
Thomas
Sorry,
Hatte in meinem XPath Ausdruck das @ Symbol vor it vergessen.
Danke trotzdem für deine Antwort !
Ich weiss, dass Apache FOP bald in der 1.0 Version rauskommt und XSL-FO
viel genauer und besser unterstützen soll.
Hoffe, dass Xalan bald XSLT 2.0 unterstützen wird ;-)