2012-01-13 2 views
1

У меня есть длинный URL-адрес в моей переменной xsl. например. @url = "http://stackoverflow.com/questions/ask/2434/35454"Получение подстроки на основе определенного индекса в xsl/xslt

Мне нужна подстрока из этого на основе третьего индекса «/». i.e Я хочу показать только http://stackoverflow.com

В xsl есть функция подстроки (строка, начало, длина), но как найти часть длины. Я не мог найти никакой функции индекса.

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

Мой URL предполагают - "http://stackoverflow.com/questions/ask/2434/35454" выход я хочу http://stackoverflow.com

Пожалуйста, предложить некоторые решения.

ответ

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

Так что, если мой URL хранится в $ URL я должен использовать, как это. concat (substring-before (url, '//'), '//', substring-before (substring-after (url, '//'), '/') –

+0

@AbhiRoczz ... Да, t забыть символ '$' перед именем переменной. –

+0

Спасибо. Я отметю ur answr правильно .. как только я его протежу .. :) –

Смежные вопросы