如何使用XSLT删除特定标识符

时间:2016-03-18 00:03:42

标签: xml xslt xslt-1.0 xslt-2.0

如何删除特定标识符并使​​用xslt更改元素标记?例如,如果输出的值包含标识符&#34; ALPHA&#34;,我需要在输出值中删除它,标记名称将变为<Alpha>。如果它包含标识符&#34; ZERO&#34;,则元素标记将变为<Zero>并删除输出中的标识符ZERO。

示例

<Data>
    <Element>01ALPHA</Element>
    <Element>Geraldine AnneALPHA</Element>
    <Element>012345ZERO</Element>
</Data>

预期输出

<Data>
    <Alpha>01</Alpha>
    <Alpha>Geraldine Anne</Alpha>
    <Zero>012345</Zero>
</Data>

谢谢。非常感谢您的反馈。

1 个答案:

答案 0 :(得分:0)

以这种方式:

XSLT 2.0

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

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

<xsl:template match="Element[ends-with(., 'ALPHA')]">
    <Alpha>
        <xsl:value-of select="substring-before(., 'ALPHA')"/>
    </Alpha>
</xsl:template>

<xsl:template match="Element[ends-with(., 'ZERO')]">
    <Zero>
        <xsl:value-of select="substring-before(., 'ZERO')"/>
    </Zero>
</xsl:template>

</xsl:stylesheet>