56760
02.11.2007, aktualisiert um 16:17:33 Uhr
8415
2
0
XSLT-Problem mit xlmns-Namespaces im XML-Source-File
Nur ohne die Namespaces im ersten Tag, läuft die XSLT-Transformation wie erwartet.
Hallo,
weil msxslt keine xlmns-Namespaces im XML verarbeiten kann, bin ich auf Saxon umgestiegen.
Sowohl mit XSLT 1.0 noch XSLT 2.0 habe ich dort das folgende Problem:
Meine XML-Datei, die transformiert werden soll:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Damit geht's -->
<taskmanager version="1.0" >
<!-- Damit nicht!
<taskmanager version="1.0" xmlns="NAMESPACE1"
xmlns:bis="NAMESPACE2"
xmlns:ddt="NAMESPACE3"
xmlns:cml="NAMESPACE4"
xmlns:log="NAMESPACE5"
....
>
-->
<tasks>
<import assembly="Test.dll" />
</tasks>
<!-- Irgendein Kommentar -->
<procedure>Test</procedure>
</taskmanager>
Mein xslt-Stylesheet sieht wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<xsl:template match="/">
<xsl:apply-templates select="taskmanager"/>
</xsl:template>
<xsl:template match="taskmanager">
<Taskmanager>
<xsl:apply-templates select="tasks"/>
<xsl:apply-templates select="procedure"/>
</Taskmanager>
</xsl:template>
<xsl:template match="tasks">
<Tasks>
</Tasks>
</xsl:template>
<xsl:template match="procedure">
<test>
<xsl:text>Test</xsl:text>
</test>
</xsl:template>
</xsl:stylesheet>
Nur, wenn ich die xlmns auskommentiere, dann erhalte ich das Ergebnis:
<?xml version="1.0" encoding="utf-8"?>
<Taskmanager>
<Tasks/>
<test>Test</test>
</Taskmanager>
Kommentier ich's wieder ein, dann erhalte ich nur:
<?xml version="1.0" encoding="utf-8"?>
aber keinen Fehler vom XSLT-Prozessor.
Kennt jemand eine Lösung wie es auch mit den xlmns-Namespaces klappt?
Herzlichen Dank im Voraus.
weil msxslt keine xlmns-Namespaces im XML verarbeiten kann, bin ich auf Saxon umgestiegen.
Sowohl mit XSLT 1.0 noch XSLT 2.0 habe ich dort das folgende Problem:
Meine XML-Datei, die transformiert werden soll:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Damit geht's -->
<taskmanager version="1.0" >
<!-- Damit nicht!
<taskmanager version="1.0" xmlns="NAMESPACE1"
xmlns:bis="NAMESPACE2"
xmlns:ddt="NAMESPACE3"
xmlns:cml="NAMESPACE4"
xmlns:log="NAMESPACE5"
....
>
-->
<tasks>
<import assembly="Test.dll" />
</tasks>
<!-- Irgendein Kommentar -->
<procedure>Test</procedure>
</taskmanager>
Mein xslt-Stylesheet sieht wie folgt aus:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes" />
<xsl:template match="/">
<xsl:apply-templates select="taskmanager"/>
</xsl:template>
<xsl:template match="taskmanager">
<Taskmanager>
<xsl:apply-templates select="tasks"/>
<xsl:apply-templates select="procedure"/>
</Taskmanager>
</xsl:template>
<xsl:template match="tasks">
<Tasks>
</Tasks>
</xsl:template>
<xsl:template match="procedure">
<test>
<xsl:text>Test</xsl:text>
</test>
</xsl:template>
</xsl:stylesheet>
Nur, wenn ich die xlmns auskommentiere, dann erhalte ich das Ergebnis:
<?xml version="1.0" encoding="utf-8"?>
<Taskmanager>
<Tasks/>
<test>Test</test>
</Taskmanager>
Kommentier ich's wieder ein, dann erhalte ich nur:
<?xml version="1.0" encoding="utf-8"?>
aber keinen Fehler vom XSLT-Prozessor.
Kennt jemand eine Lösung wie es auch mit den xlmns-Namespaces klappt?
Herzlichen Dank im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 72558
Url: https://administrator.de/contentid/72558
Ausgedruckt am: 28.03.2024 um 23:03 Uhr
2 Kommentare
Neuester Kommentar