2013-03-29 27 views
0

去除節點名稱中'_'的字符,我的要求是將其中有_的所有節點名稱重命名爲新名稱。 如何去除節點名稱中存在的char權限,並將名稱的左側作爲新節點名稱? e.g如何使用xslt

<abc_2013></abc_2013> to be renamed as <abc></abc> 

回答

1

這種轉變

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="*[contains(name(), '_')]"> 
    <xsl:element name="{substring-before(name(),'_')}" 
       namespace="{namespace-uri()}"> 

    <xsl:apply-templates select="node()|@*"/> 
    </xsl:element> 
</xsl:template> 
</xsl:stylesheet> 

當這個XML文檔施加:

<abc_2013>xYz</abc_2013> 

產生想要的,正確的結果

<abc>xYz</abc> 

說明

  1. 正確使用和壓倒一切的identity rule

  2. 正確使用該函數的substring-before()