如何使用XSLT将字符串分为数字前后的2个部分?

时间:2019-03-26 08:09:42

标签: xslt substring

我需要找到一个数字在字符串中的第一个匹配项,并使用XSLT在该数字之前获取文本字符串 外汇:Fazantstraat 22是我只需要将Fazantstraat字符串化的字符串 ,abcdefg 1234,所以我需要abcdefg等

1 个答案:

答案 0 :(得分:2)

给出:

<input>Fazantstraat 22</input>

以下说明:

<xsl:value-of select="substring-before(translate(input, '123456789', '000000000'), '0')"/>

将返回:

Fazantstraat 

(带有尾随空格)。那是针对XSLT 1.0的。

在XSLT 2.0中,您可以使用正则表达式:

<xsl:value-of select="replace(input, '\d.*', '')"/>

已添加:

如果要将输入分为两个单独的元素,最好使用xsl:analyze-string指令(在XSLT 2.0中),例如:

<xsl:analyze-string select="input" regex="\d.*">
    <xsl:matching-substring>
        <number>
            <xsl:value-of select="." />
        </number>
    </xsl:matching-substring>
    <xsl:non-matching-substring>
        <address>
            <xsl:value-of select="." />
        </address>
    </xsl:non-matching-substring>
</xsl:analyze-string>

演示https://xsltfiddle.liberty-development.net/bFN1y9e/1