Получение подстроки на основе определенного индекса в xsl / xslt - PullRequest
1 голос
/ 13 января 2012

У меня длинный веб-URL в моей переменной xsl. например. @url = "http://stackoverflow.com/questions/ask/2434/35454"

Мне нужна подстрока из этого на основе 3-го индекса "/". т.е. я хочу отображать только http://stackoverflow.com

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

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

Предположим, мой URL - "http://stackoverflow.com/questions/ask/2434/35454" Я хочу получить вывод http://stackoverflow.com

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

1 Ответ

1 голос
/ 13 января 2012

Используйте

   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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...