2012-01-26 11 views

risposta

13

I seguenti imita l'XSLT 2.0 costrutto:

Creare modelli in una modalità che si ri-costruire i nodi senza spazi dei nomi:

<!-- generate a new element in the same namespace as the matched element, 
    copying its attributes, but without copying its unused namespace nodes, 
    then continue processing content in the "copy-no-namepaces" mode --> 

<xsl:template match="*" mode="copy-no-namespaces"> 
    <xsl:element name="{local-name()}" namespace="{namespace-uri()}"> 
     <xsl:copy-of select="@*"/> 
     <xsl:apply-templates select="node()" mode="copy-no-namespaces"/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="comment()| processing-instruction()" mode="copy-no-namespaces"> 
    <xsl:copy/> 
</xsl:template> 

apply-templates per l'elemento desiderato (s) in quanto modalità:

<xsl:apply-templates select="maml:alertSet/maml:alert" mode="copy-no-namespaces"/> 
+0

Il modello ricorsivo non funziona correttamente per gli attributi. Come è ora copia l'attributo nell'elemento contenitore, ma copia anche il valore dell'attributo come testo. Devi cambiare '' a ' '(rilascia il' @ * ') –