ich einen Eingang xml haben -XSLT Stammnamespace entfernen und fügen Sie Namespace zu einem anderen Element
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root xmlns="http://www.somenamespace">
<Child1>
<A>a</A>
<B>b</B>
</Child1>
<Child2>
<C>c</C>
<D>d</D>
</Child2>
</Root>
ich meine Ausgabe xml wollen nach der Transformation den Namespace von der Wurzel zu entfernen und sie zu Element Child1 hinzufügen, anstatt wie this-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<NewRoot>
<NewChild1 xmlns="http://www.somenamespace">
<A>a</A>
<B>b</B>
</NewChild1>
<NewChild2>
<C>c</C>
<D>d</D>
</NewChild2>
</NewRoot>
Mein xslt sieht wie-
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.somenamespace"
xmlns:test="http://www.somenamespace"
exclude-result-prefixes="test">
<xsl:output method="xml" indent="yes" version="1.0" encoding="UTF-8" standalone="yes"/>
<xsl:template match="/">
<NewRoot>
<xsl:apply-templates select="test:Root/test:Child1"/>
<xsl:apply-templates select="test:Root/test:Child2"/>
</NewRoot>
</xsl:template>
<xsl:template match="test:Root/test:Child1">
<NewChild1> <xsl:value-of select="current()"/> </NewChild1>
</xsl:template>
<xsl:template match="test:Root/test:Child2">
<NewChild2> <xsl:value-of select="current()"/> </NewChild2>
</xsl:template>
</xsl:stylesheet>
Derzeit wird diese den Namespace an die NewRoot fügt Element.
Sind Sie sicher, dass Sie das wollen? Dies wird viel mehr als nur "Verschieben des Namespace" tun: es wird den gesamten Zweig "Child2" von seinem Namespace in den Namespace übertragen. –
Der Grund, dass NewRoot in den Namensraum 'http: // www.somenamespace' geht, liegt an der Namensraum-Deklaration' xmlns = "http: //www.somenamespace", die alle literalen Ergebniselemente betrifft, deren Name nicht vordefiniert ist. –
michael.hor257k's Kommentar oben bezieht sich anscheinend auf das, was das Ausgabebeispiel des OPs tun wird (durch Verschieben der Standard-Namespace-Deklaration), nicht was das Stylesheet tut. – LarsH