如何使用xslt中的通配符从字符串中提取数字?

时间:2015-03-25 10:27:21

标签: xslt wildcard

我有一些名字,从1到13的数字开始:

<description>
</description>
<short>1EN-1</short>
</description>
<description>
<short>2EN-1</short>
</description>

依此类推

<description>
<short>13EN-1</short>
</description>

我需要能够提取第一个数字。

我使用了以下代码:

<xsl:when test="starts-with(description/short, '1')">1</xsl:when>

不幸的是,这个字符串返回1,描述/ short以1开头,以及以11,12和13开头。任何建议都会非常感激!

1 个答案:

答案 0 :(得分:1)

xsl:choose匹配的第一个 when测试将是使用的测试,因此将较长的前缀测试放在较短的测试之前:

<xsl:choose>
  <xsl:when test="starts-with(description/short, '13')">...</xsl:when>
  <xsl:when test="starts-with(description/short, '12')">...</xsl:when>
  <!-- ... -->
  <xsl:when test="starts-with(description/short, '2')">...</xsl:when>
  <xsl:when test="starts-with(description/short, '1')">...</xsl:when>
</xsl:choose>