2016-10-25 2 views
1

Есть ли способ объединить функцию подстроки после функции подстроки в запросе xpath, чтобы выбрать определенное количество символов после определенного символа. например «Это тестовая строка».xslt комбинирование функций в запросе xpath

Выберите только символы после появления «a», а затем укажите, сколько символов отобразится после этого.

Я пробовал варианты этого до сих пор без везения.

<xsl:value-of select="substring((substring-before(/dataset/node1/node2/@NAME, '@ ')@NAME,1,4)"/> 

Я могу найти информацию об объединении подстроки-после с подстрокой раньше. О, и я использую xslt 1.0.

ответ

0

Выберите только символы после появления «a», а затем укажите количество отображаемых символов .

XML Input

<dataset> 
    <node1> 
     <node2 NAME="This is a test string"/> 
    </node1> 
</dataset> 

XSLT 1,0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="/"> 
    <results><xsl:value-of select="substring(substring-after(/dataset/node1/node2/@NAME,'a'),1,4)"/></results> 
    </xsl:template> 

</xsl:stylesheet> 

Выход

<results> tes</results> 

Если вы не хотите игнорировать ведущее место и получить выход <results>test</results>, добавить normalize-space() в смесь ...

<results> 
    <xsl:value-of select=" 
    substring(
     normalize-space(
     substring-after(/dataset/node1/node2/@NAME,'a') 
    ) 
    ,1,4)"/> 
</results>