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