非常简单的XSLT字符串问题

时间:2009-04-15 20:39:46

标签: xslt

我怎么做“a-z或A-Z之间的子串(变量,1,1)”然后使用XSLT做X其他做Y?我知道一个选项是使用正则表达式,但我希望有一些东西不是那么过分。

2 个答案:

答案 0 :(得分:3)

简单的XSLT 1.0解决方案

这种转变:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:variable name="vLetters"
  select="'ABCDEFGHIKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"/>

  <xsl:variable name="vText" select="'1Text'"/>

    <xsl:template match="/">
      <xsl:choose>
        <xsl:when test=
          "contains($vLetters, substring($vText,1,1))">
            Letter
        </xsl:when>
        <xsl:otherwise>
          Not Letter
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

应用于任何XML文档(未使用)时, 产生想要的结果

      Not Letter

根据具体情况,可以为<xsl:when>指令的两个“子句”(<xsl:otherwise><xsl:choose>)中的每一个添加必要的处理。

答案 1 :(得分:1)

对于XSLT 2.0,您可以使用正则表达式函数matches

<xsl:choose>
  <xsl:when test="matches($variable1, '^[a-zA-Z].*$')">
    Match
  </xsl:when>
  <xsl:otherwise>
   NoMatch
</xsl:otherwise>
</xsl:choose>