Guten Tag,
ich möchte mit einer XSL Transformation die Namespace-Definitionen im Wurzelknoten ändern. Dazu hatte ich hier in diesem Forum schon einmal eine Fragegestellt, wobei herauskam dass es am Besten ist einfach den Wurzelknoten neuzuschreiben. Das habe ich mittlerweile auch gemacht, doch bekomme ich dabei ein Problem. Und zwar werden die alten Namespace-Definitionen, die vorher im Wurzelknoten standen, in alle Kindknoten geschrieben. Hat jemand eine Idee wie ich das verhindern kann?
Damit ihr euch das besser vorstellen könnt was ich meine hier noch einwenig Quellcode:
Die XSL Transformation:
Das ursprüngliche XML Dokument:
Das gelieferte Ergebnis der Transformation als XML Dokument:
Das eigentlich gewünschte Ergebnis:
Würde mich echt freuen wenn ihr mir bei diesem Problem weiterhelfen könntet. Ich habe schon in dem englischen Forum "bytes" eine Teil-Antwort gefunden, dass man sich ein eigenes Copy-Template nach folgendem Schema schreiben sollte, doch dabei gehen alle Namespaces verloren und ist somit leider auch keine Lösung.
Vielen Dank schon einmal im Voraus!!!!
Florian
ich möchte mit einer XSL Transformation die Namespace-Definitionen im Wurzelknoten ändern. Dazu hatte ich hier in diesem Forum schon einmal eine Fragegestellt, wobei herauskam dass es am Besten ist einfach den Wurzelknoten neuzuschreiben. Das habe ich mittlerweile auch gemacht, doch bekomme ich dabei ein Problem. Und zwar werden die alten Namespace-Definitionen, die vorher im Wurzelknoten standen, in alle Kindknoten geschrieben. Hat jemand eine Idee wie ich das verhindern kann?
Damit ihr euch das besser vorstellen könnt was ich meine hier noch einwenig Quellcode:
Die XSL Transformation:
Code:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1#"> <xsl:output method="xml" indent="yes"/> <xsl:template match="oxml:ontology"> <oxml:ontology xmlns="http://www.xpress-project.eu" xmlns:a="http://www.xpress-project.eu" xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1"> <xsl:apply-templates select="node() | @*"/> </oxml:ontology> </xsl:template> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
Code:
<?xml version="1.0" encoding="utf-8"?> <!-- xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1#" should be xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1" --> <oxml:ontology xmlns="http://www.xpress-project.eu#" xmlns:a="http://www.xpress-project.eu#" xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1#"> <oxml:axiom> <oxml:text language="flogic">TEXT</oxml:text> </oxml:axiom> <oxml:relation /> </oxml:ontology>
Code:
<?xml version="1.0" encoding="utf-8"?> <!-- xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1#" should be xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1" --> <oxml:ontology xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1" xmlns="http://www.xpress-project.eu" xmlns:a="http://www.xpress-project.eu"> <oxml:axiom xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1#" xmlns="http://www.xpress-project.eu#" xmlns:a="http://www.xpress-project.eu#"> <oxml:text language="flogic">TEXT</oxml:text> </oxml:axiom> <oxml:relation xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1#" xmlns="http://www.xpress-project.eu#" xmlns:a="http://www.xpress-project.eu#" /> </oxml:ontology>
Code:
<?xml version="1.0" encoding="utf-8"?> <!-- xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1#" should be xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1" --> <oxml:ontology xmlns="http://www.xpress-project.eu" xmlns:a="http://www.xpress-project.eu" xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1"> <oxml:axiom> <oxml:text language="flogic">TEXT</oxml:text> </oxml:axiom> <oxml:relation /> </oxml:ontology>
Code:
<xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <xsl:template match="oxml:ontology"> <oxml:ontology xmlns="http://www.xpress-project.eu" xmlns:a="http://www.xpress-project.eu" xmlns:oxml="http://schema.ontoprise.com/oxml/core/2.1"> <xsl:for-each select="*"> <xsl:call-template name="copy"/> </xsl:for-each> </oxml:ontology> </xsl:template> <xsl:template name="copy"> <xsl:element name="local-name()"> <xsl:copy-of select="@*"/> <xsl:for-each select="*"> <xsl:call-template name="copy"/> </xsl:for-each> </xsl:element> </xsl:template>
Florian
Comment