hi Tengo un documento XML mapa del sitio que se ve algo como estoXSLT copia de sin hijos
<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>
ahora quiero recuperar un documento XML para la barra de navegación, que incluye todos los pagenodes que tienen fornavbar = cierto. ¿Cómo se puede hacer esto?
lo más cerca que era capaz de conseguir hasta el momento era la siguiente:
<?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>
el problema con esto es que incluye todos los hijos de nada coincidentes como barra de navegación
sólo quiero copiar todos los atributos , no todos los niños
pero si intento
<?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>
entonces tengo 2 problemas
- yo podría escribir a máquina por separado cada atributo, y tengo unos cuantos por página y ayúdales propensos a cambiar con el tiempo
- pierde la jerarquía. todo se vuelve plano uno tras otro
agradecería a todos y cualquier ayuda en la materia.
gracias!
EDIT: salida de la muestra que le gusta ver Identificación del
<pagenode title="home" url="~/" fornavbar="true">
<pagenode title="events" url="~/admin/events" fornavbar="true"/>
<pagenode title="catalog" url="~/catalog" fornavbar="true"/>
</pagenode>
Buena pregunta, +1. Vea mi respuesta para una solución completa pero muy corta que aprovecha al máximo el patrón de diseño XSLT más fundamental. :) –