如何使用xslt中的通配符从字符串中提取数字?有
问题描述:
我选择的名字,用数字开始从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将不胜感激!
答
在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
是后面的字符串中的龙头号码(“EN”你的例子)事先知道?如果是的话,你可以简单地使用'substring-before()'函数来提取数字。如果不是,下一个字符是什么**是已知的?或者关于这个数字的最大尺寸? – 2015-03-25 10:32:45
在' - '之前获取子字符串,并使用双重翻译仅对数字进行过滤。 – 2015-03-25 10:35:12