hi Ho un documento XML Sitemap che sembra qualcosa di simileXSLT copia dei senza figli
<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>
ora voglio recuperare un documento XML per la barra di navigazione, che include tutti i pagenodes che hanno fornavbar = vero. Come si può fare?
il più vicino sono stato in grado di ottenere fino ad ora è stato questo:
<?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>
il problema di questo è che include tutti i figli di qualsiasi cosa abbinate come barra di navigazione
voglio solo copiare tutti gli attributi , non tutti i bambini
ma se provo
<?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>
poi ho 2 problemi
- potrei digitare fuori ogni attributo a parte, e ho un bel po 'per pagina e theyre inclini a cambiare finalmente
- perde la gerarchia. tutto diventa piatto uno dopo l'altro
gradirei tutto e qualsiasi aiuto in materia.
grazie!
EDIT: esempio di output che id piace vedere
<pagenode title="home" url="~/" fornavbar="true">
<pagenode title="events" url="~/admin/events" fornavbar="true"/>
<pagenode title="catalog" url="~/catalog" fornavbar="true"/>
</pagenode>
Buona domanda, +1. Vedi la mia risposta per una soluzione completa ma molto breve che sfrutta appieno il modello di progettazione XSLT più fondamentale. :) –