2015-03-25 109 views
0

我选择的名字,用数字开始从1到13:如何使用xslt中的通配符从字符串中提取数字?有

<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和11,12和13的任何建议开始的那些返回1将不胜感激!

+0

是后面的字符串中的龙头号码(“EN”你的例子)事先知道?如果是的话,你可以简单地使用'substring-before()'函数来提取数字。如果不是,下一个字符是什么**是已知的?或者关于这个数字的最大尺寸? – 2015-03-25 10:32:45

+0

在' - '之前获取子字符串,并使用双重翻译仅对数字进行过滤。 – 2015-03-25 10:35:12

回答

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> 
+0

这样做!谢谢! – 2015-03-25 12:00:17

+0

@JoachimHollekim请不要忘记接受这个答案,如果它解决了你的问题。谢谢! – 2015-03-25 14:50:51

相关问题