2012-01-26 9 views

Odpowiedz

13

Poniższe naśladuje XSLT 2.0 konstrukt:

Tworzenie szablonów w trybie, który będzie ponownie tworzymy węzły bez nazw:

<!-- 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 dla żądanego elementu (-ów), w które mode:

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

Twój szablon rekursywny nie działa poprawnie dla atrybutów. Obecnie kopiuje atrybut do elementu zawierającego, ale także kopiuje wartość atrybutu jako tekst. Musisz zmienić '' to ' (upuść '@ *') –