Hi Community!
Ich habe ein Problem im XSLT Stylesheet die Elemente aus dem zu transformierenden XML-Dokument über ihren Namespace anzusprechen.
<br>
Folgende Dateien gehören zu dem Problem:
<br>
<b>1.) Definition des XML-Dokument Schema sieht folgendermassen aus (Auszug):</b>
<br>
<?xml version="1.0" encoding="utf-8"?>
<schema targetNamespace="http://www.xmlspy.com/schemas/orgchart"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xyz="http://www.xmlspy.com/schemas/orgchart" Version="6.3.0">
<element name="commodity"
default=""
minOccurs="1"
maxOccurs="1"
ns="p2p"
xmlns2p="http://www.portal.p2p.com">
<complexType>
<sequence>
<element name="administrative_information"
default=""
minOccurs="1"
maxOccurs="1"
ns="p2p">
<complexType>
<sequence>
<element name="creation_date"
default=""
minOccurs="1"
maxOccurs="1"
type="date"
ns="p2p"/>
...
<br>
Soweit ich das verstehe, ist jedes Element dem namespace "p2p" zugerodnet, und das ist genau das was ich will bzw. brauche.
<br>
<b>2) Das XML-Dokument, dessen Inhalt mit XSLT als HTML dargestellt werden soll, sieht z.B. wie folgt aus (Auszug):</b>
<br>
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="show_card.xsl"?>
<commodity xmlns:xf="http://www.sapportals.com/wcm/app/xmlforms"
xmlns:xsi="http//www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="/etc/xmlforms/P2PCategoryCard_TEST/P2PCategoryCard_TEST-Schema.xml">
<administrative_information>
<creation_date>2005-07-04</creation_date>
...
<br>
<b>3.) Das XSLT Stylesheet sieht wie folgt aus:</b>
<br>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns2p="http://www.portal.p2p.com">
<xslutput method="html"/>
<xsl:template match="p2p:commodity">
<html>
<body>
<h2>XSLT Test</h2>
Creation Date: <xsl:value-of select="p2p:administrative_information/p2p:creation_date"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<br>
Und genau hier fängt das Problem an, denn wenn ich versuche im Stylesheet die Dokument-Elemente über ihr im Schema definiertes Namespace anzusprechen z.B.:
<br>
<xsl:template match="p2p:commodity">
<br>
funktioiert es nicht, lässt man jedoch das namespace weg z.B:
<br>
<xsl:template match="commodity">
<br>
funktioniert die Transformation wie gewünscht.
<br>
Alle Dateien ausser dem XSLT Stylesheet werden von einem speziellen Tool automatisch generiert, ich kann deshalb auf die Struktur und den Inhalt dieser Dateien keinen Einfluß nehmen. Das Stylesheet ist die einziege Datei, die ich beliebig verändern kann. Aus bestimmten Gründen will/muss ich im Stylesheet die Elemente über ihr Namspace ansprechen, aber genau das geliengt mir nicht.
<br>
Jede Hilfe ist Willkommen!
<br>
Beste Grüße,
<br>
Adam Kreuschner
Ich habe ein Problem im XSLT Stylesheet die Elemente aus dem zu transformierenden XML-Dokument über ihren Namespace anzusprechen.
<br>
Folgende Dateien gehören zu dem Problem:
<br>
<b>1.) Definition des XML-Dokument Schema sieht folgendermassen aus (Auszug):</b>
<br>
<?xml version="1.0" encoding="utf-8"?>
<schema targetNamespace="http://www.xmlspy.com/schemas/orgchart"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xyz="http://www.xmlspy.com/schemas/orgchart" Version="6.3.0">
<element name="commodity"
default=""
minOccurs="1"
maxOccurs="1"
ns="p2p"
xmlns2p="http://www.portal.p2p.com">
<complexType>
<sequence>
<element name="administrative_information"
default=""
minOccurs="1"
maxOccurs="1"
ns="p2p">
<complexType>
<sequence>
<element name="creation_date"
default=""
minOccurs="1"
maxOccurs="1"
type="date"
ns="p2p"/>
...
<br>
Soweit ich das verstehe, ist jedes Element dem namespace "p2p" zugerodnet, und das ist genau das was ich will bzw. brauche.
<br>
<b>2) Das XML-Dokument, dessen Inhalt mit XSLT als HTML dargestellt werden soll, sieht z.B. wie folgt aus (Auszug):</b>
<br>
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="show_card.xsl"?>
<commodity xmlns:xf="http://www.sapportals.com/wcm/app/xmlforms"
xmlns:xsi="http//www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="/etc/xmlforms/P2PCategoryCard_TEST/P2PCategoryCard_TEST-Schema.xml">
<administrative_information>
<creation_date>2005-07-04</creation_date>
...
<br>
<b>3.) Das XSLT Stylesheet sieht wie folgt aus:</b>
<br>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns2p="http://www.portal.p2p.com">
<xslutput method="html"/>
<xsl:template match="p2p:commodity">
<html>
<body>
<h2>XSLT Test</h2>
Creation Date: <xsl:value-of select="p2p:administrative_information/p2p:creation_date"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<br>
Und genau hier fängt das Problem an, denn wenn ich versuche im Stylesheet die Dokument-Elemente über ihr im Schema definiertes Namespace anzusprechen z.B.:
<br>
<xsl:template match="p2p:commodity">
<br>
funktioiert es nicht, lässt man jedoch das namespace weg z.B:
<br>
<xsl:template match="commodity">
<br>
funktioniert die Transformation wie gewünscht.
<br>
Alle Dateien ausser dem XSLT Stylesheet werden von einem speziellen Tool automatisch generiert, ich kann deshalb auf die Struktur und den Inhalt dieser Dateien keinen Einfluß nehmen. Das Stylesheet ist die einziege Datei, die ich beliebig verändern kann. Aus bestimmten Gründen will/muss ich im Stylesheet die Elemente über ihr Namspace ansprechen, aber genau das geliengt mir nicht.
<br>
Jede Hilfe ist Willkommen!
<br>
Beste Grüße,
<br>
Adam Kreuschner
Comment