xslt - 如何使用 XSLT 从字符串中删除特定字符?

标签 xslt

我需要检查特定字符串是否包含特定单词,例如检查是否,
SultansOfSwing 包含单词 Swing。

我还要提一下,有问题的字符串的值是未知的。因为它可以是任何单词,所以我们不知道长度等等。

我知道我可以通过使用 contains 关键字来做到这一点。

但是一旦我知道这个词包含 Swing 关键字,我想显示没有这个“Swing”词的字符串..从而有效地只显示“SultansOf”。

我一直在尝试探索如何实现这一目标,但没有取得任何突破。

有人可以请告知哪个关键字或功能将提供此功能吗?如何从字符串中删除特定单词。

提前感谢您的帮助。

问候。

可怕的

最佳答案

鉴于此输入:

<root>
    <song>SultansOfSwing</song>
    <song>SwingOfSultans</song>
    <song>SultansSwingOf</song>
</root>

这个的输出:
<?xml version='1.0' ?>
<root>
    <swing-less-long>SultansOf</swing-less-long>
    <swing-less-long>OfSultans</swing-less-long>
    <swing-less-long>SultansOf</swing-less-long>
</root>

可以从中得到。注意使用 substring-beforesubstring-after .
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:template match="/">
        <root>
            <xsl:apply-templates select="root/song"/>
        </root>
    </xsl:template>
    <xsl:template match="song">
        <swing-less-long>
            <xsl:if test="contains(., 'Swing')">
                <xsl:call-template name="remove">
                    <xsl:with-param name="value" select="."/>
                </xsl:call-template>
            </xsl:if>
        </swing-less-long>
    </xsl:template>
    <xsl:template name="remove">
        <xsl:param name="value"/>
        <xsl:value-of select="concat(substring-before($value, 'Swing'), substring-after($value, 'Swing'))"/>
    </xsl:template>
</xsl:stylesheet>

关于xslt - 如何使用 XSLT 从字符串中删除特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1153304/

相关文章:

xml - 我想实现一个 `split function/template` ,它将字符串和分隔符作为输入,并返回字符串的分割数组

xml - JAXP Transformer 通过 DOMSource 返回样式表

html - 如何CSS一个两列的元素列表?

c# - 尝试使用 XPath 过滤 XML

xml - 通过 XSLT 将输入 XML 复制到输出

xml - xslt - 引用上一个模板的输出结果

xslt - XSL 中的元素名称大写

xml - 在 XPath 中提取以下同级节点的子节点属性

xml - XSL 和 XSLT 之间有什么关系

xslt - Wmic/格式开关无效的 XSL?