XML Entrée:Copier les enfants directs et leurs attributs uniquement dans 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>
sortie souhaitée (sorte de « copie superficielle » avec seulement les éléments enfants immédiats et attributs):
<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>
Y at-il une autre façon (par exemple, sans pour-chacun) pour y parvenir?
<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>
modifier: les nœuds de texte « Valeur Y » et « Valeur Z » sont effectivement censés être le résultat. "Foo" et "Bar" ne sont toujours pas souhaités dans le résultat.
Désolé, une erreur dans la sortie désirée (voir ma question Edited). Avec votre solution, le résultat est ' Valeur XFooBar ' (tous les nœuds de texte concaténés) et ' ' (pas de nœud de texte), mais ce que je cherche pour est ' ' (noeud vide, pas de texte enfants) et ' Valeur Y ' (avec enfant de texte). –
CoDEmanX
@CoDEmanX: J'ai mis à jour ma réponse. – zx485