salut j'ai un document xml sitemap qui ressemble à cecopie de xslt sans enfants
<pagenode title="home" url="~/" fornavbar="true">
<pagenode title="admin" url="~/admin" fornavbar="false">
<pagenode title="users" url="~/admin/users" fornavbar="false"/>
<pagenode title="events" url="~/admin/events" fornavbar="true"/>
</pagenode>
<pagenode title="catalog" url="~/catalog" fornavbar="true"/>
<pagenode title="contact us" url="~/contactus" fornavbar="false"/>
</pagenode>
maintenant je veux récupérer un document XML pour la barre de navigation, qui comprend tous les pagenodes qui ont fornavbar = vrai. Comment cela peut-il être fait?
le plus proche, j'ai pu obtenir jusqu'à présent était le suivant:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="pagenode[@fornavbar='true']">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
le problème est qui comprend tous les enfants de tout ce qui correspond comme navbar
Je veux seulement copier tous les attributs , tous les enfants
mais si je tente
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="pagenode[@fornavbar='true']">
<pagenode title="{@title}" url="{@url}"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
alors j'ai 2 problèmes
- je pourrais taper chaque attribut séparément, et j'ai un assez grand nombre par page et theyre susceptibles de changer éventuellement
- il perd la hiérarchie. tout devient plat l'un après l'autre
J'apprécierais tous et n'importe quelle aide dans le sujet.
merci!
EDIT: sortie échantillon id aiment voir
<pagenode title="home" url="~/" fornavbar="true">
<pagenode title="events" url="~/admin/events" fornavbar="true"/>
<pagenode title="catalog" url="~/catalog" fornavbar="true"/>
</pagenode>
Bonne question, +1. Voir ma réponse pour une solution complète mais très courte qui exploite pleinement le motif de conception XSLT le plus fondamental. :) –