Разбор строки XSLT - PullRequest
       11

Разбор строки XSLT

3 голосов
/ 11 марта 2010

Я новичок в XSLT для «PrimarySubject» ниже. Мне нужно заменить символы «&» на% 26 и «» на% 20, которые он содержит.

<xsl:template name="BuildLink"> 
    <xsl:param name="PrimarySubject" /> 
    <xsl:text>?PrimarySubject=</xsl:text> 
    <xsl:value-of select="$PrimarySubject" /> 
</xsl:template> 

Есть ли функция замены строк, которую я могу использовать в xslt версии 1? Спасибо,

Ответы [ 2 ]

3 голосов
/ 12 марта 2010

Это проще всего сделать с помощью библиотеки FXSL , точнее - шаблона str-map.

Вот простой пример .

Это преобразование:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:testmap="testmap"
exclude-result-prefixes="xsl testmap"
>
   <xsl:import href="str-map.xsl"/>

   <!-- to be applied on any xml source -->

   <testmap:testmap/>

   <xsl:output omit-xml-declaration="yes" indent="yes"/>

   <xsl:template match="/">
     <xsl:variable name="vTestMap" select="document('')/*/testmap:*[1]"/>
     <xsl:call-template name="str-map">
       <xsl:with-param name="pFun" select="$vTestMap"/>
       <xsl:with-param name="pStr" select="'abc&amp;d f'"/>
     </xsl:call-template>
   </xsl:template>

    <xsl:template match="testmap:*">
      <xsl:param name="arg1"/>

      <xsl:choose>
       <xsl:when test="$arg1 = '&amp;'">%26</xsl:when>
       <xsl:when test="$arg1 = ' '">%20</xsl:when>
       <xsl:otherwise><xsl:value-of select="$arg1"/></xsl:otherwise>
      </xsl:choose>
    </xsl:template>

</xsl:stylesheet>

при применении к любому документу XML (не используется), дает желаемый результат:

abc%26d%20f

0 голосов
/ 11 марта 2010

В XSLT есть несколько подстрок функций:

  • строка substring-before (строка, строка)
  • string substring-after (строка, строка)
  • строковая подстрока (строка, число, число?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...