根据xsl / xslt中的特定索引获取子字符串

时间:2012-01-13 05:20:58

标签: xslt

我的xsl变量中有一个很长的网址。 例如。 @url =“http://stackoverflow.com/questions/ask/2434/35454”

我需要一个基于第三个索引“/”的子串。即我只想展示 http://stackoverflow.com

xsl中有一个子串(字符串,开始,长度)函数,但我如何找到长度部分。我找不到任何indexof函数。

<xsl:value-of select="substring(url,1,length)"/> 

我的网址是假设 - “http://stackoverflow.com/questions/ask/2434/35454” 我想要的输出是http://stackoverflow.com

请提出一些解决方案。

1 个答案:

答案 0 :(得分:1)

使用

   concat(substring-before(.,'//'),
          '//',
          substring-before(substring-after(., '//'),
                           '/'
                           )
         )

完整的代码示例

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/*">
  <xsl:value-of select=
  "concat(substring-before(.,'//'),
          '//',
          substring-before(substring-after(., '//'),
                           '/'
                           )
         )
  "/>
 </xsl:template>
</xsl:stylesheet>

在此XML文档上应用此转换时

<t>http://stackoverflow.com/questions/ask/2434/35454</t>

产生了想要的正确结果

http://stackoverflow.com