XML-Input-:Kopiere direkte Kinder und ihre Attribute nur in XSLT 1.0?
<root>
<recordList>
<record priref="1">
<Group attr="val">
<Field1>Value X</Field1>
<Field2>
<value lang="en-US">Foo</value>
<value lang="de-DE">Bar</value>
</Field2>
</Group>
<Field3 attr="val">Value Y</Field3>
</record>
<record priref="2">
<Field3 attr="val">Value Z</Field3>
</record>
</recordList>
</root>
gewünschte Ausgabe (eine Art "flache Kopie" nur mit den unmittelbar untergeordneten Elemente und Attribute):
<root>
<record priref="1">
<Group attr="val" />
<Field3 attr="val">Value Y</Field3>
</record>
<record priref="2">
<Field3 attr="val">Value Z</Field3>
</record>
</root>
Gibt es eine andere Art und Weise (zB ohne for-each) um das zu erreichen?
<xsl:template match="/">
<root>
<xsl:apply-templates select="root/recordList/record" />
</root>
</xsl:template>
<xsl:template match="record">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:for-each select="*">
<xsl:copy>
<xsl:copy-of select="@* | text()"/>
</xsl:copy>
</xsl:for-each>
</xsl:copy>
</xsl:template>
edit: die Textknoten „Wert Y“ und „Wert Z“ sollte eigentlich im Ergebnis. "Foo" und "Bar" sind im Ergebnis immer noch nicht erwünscht.
Leider gab es einen Fehler in der gewünschten Ausgabe (meine editierte Frage). Mit Ihrer Lösung ist das Ergebnis ' Wert XFooBar ' (alle Textknoten verkettet) und ' ' (kein Textknoten), aber was ich suche für ist ' ' (leerer Knoten, kein Text untergeordnet) und ' Wert Y ' (mit Text untergeordnet). –
CoDEmanX
@CoDEmanX: Ich habe meine Antwort aktualisiert. – zx485