2009-11-20 3 views
2

Mon besoin: Je souhaite copier en profondeur tous les fils d'un seul noeud sélectionné sans le copier réellement. Exemple: à partirXSLT: copie enfant profonde

<father><son i="1" /><son i="2" /><son i="0"><lastNode /></son></father> 

Je souhaite extraire

<son i="1" /><son i="2" /><son i="0"><lastNode /></son> 

Je sais que je peux le faire avec un cycle pour chaque-un, puis xsl: copy-of. Je me demande s'il existe une expression plus simple pour obtenir le même résultat. Une idée?

Suivi. Ma question a raté quelques points. J'aurais dû dire que tous les enfants signifient "tous les enfants possibles", y compris les codes de texte; une autre vérification qu'une meilleure question contient déjà la réponse. Deuxièmement, ce que j'ai appris de vous - la communauté - c'est que j'étais assez stupide pour essayer de résoudre par XSL ce qui en fait était plus un problème XPATH. Merci à vous tous pour cet aperçu

À votre santé.

+0

Si est l'élément de document, cette copie en profondeur ne produira pas un document XML bien formé. – Erlock

Répondre

3

Essayez de sélectionner tous les enfants ..

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
    <xsl:copy-of select="father/*"/> 
</xsl:template> 
</xsl:stylesheet> 

PAR EXEMPLE Compte tenu de l'entrée

<father><son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son></father> 

Il produit

<son i="1" /><son i="2" /><niceSon /><son i="0"><lastNode /></son> 
0

Utilisez par ex. <xsl:copy-of select="father/son"/>

+0

Ma faute: mon exemple était trompeur. Votre solution ne fonctionne que si tous les enfants sont . Si vous avez cela ne fonctionne plus – Daniel

3
<xsl:copy-of select="father/node()" /> 
+1

cela correspond à tous les nœuds autres qu'un nœud d'attribut. – mikesub

+1

Votre commentaire était utile. J'ai d'abord négligé la différence entre la solution proposée par vous et la solution proposée par codemeit; mais, en fait, votre solution est la bonne quand vous avez besoin de copier des textnodes. Exemple: si j'ai besoin de transformer en html quelque chose comme: Bla bla bla J'ai dit bla! etc etc puis fait ce que je voulais vraiment dire alors que la solution oter garder seulement J'ai dit bla!. Les bonnes nouvelles sont que nous avons toujours quelque chose à apprendre ... – Daniel

Questions connexes