XSLT - 从文本节点中删除某些字符串

时间:2015-09-15 14:04:39

标签: xml xslt xslt-2.0

我有xml如下,

<doc>
<p type="para">.<t/>JMS<s/>
    <style type="italic">Bambulla</style>
    <s/>2012-13, s. 65 (ad § 3)
</p>
</doc>

我需要的是移除.之后的<p type="para">。请注意,每次.位于<p type="para"><t/>之间。

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

    <xsl:template match="p[@type='para']">
        <p type="para">
            <xsl:apply-templates/>
        </p>
    </xsl:template>

如何在xsl上方展开以仅删除.字符串?

1 个答案:

答案 0 :(得分:1)

如果您添加<xsl:template match="p[@type='para']/node()[1][self::text() and . = '.' and following-sibling::node()[1][self::t[not(node())]]]"/>,那么p[@type='para']的任何第一个子节点(其为具有字符串值.的文本节点,后跟一个空的t元素将是删除。