How to mimic copy-namespaces=“no” in XSLT 1.0?

前端 未结 1 493
盖世英雄少女心
盖世英雄少女心 2020-11-30 10:21

I want to rewrite this xslt piece in XSLT 1.0, which does not support \"copy-namespaces\".



        
相关标签:
1条回答
  • 2020-11-30 11:17

    The following mimics the XSLT 2.0 construct:

    Create templates in a mode that will re-construct your nodes without namespaces:

    <!-- 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 for the desired element(s) in that mode:

    <xsl:apply-templates  select="maml:alertSet/maml:alert" mode="copy-no-namespaces"/>
    
    0 讨论(0)
提交回复
热议问题