XSLT 2.0解決方案
打入標記序列和比較使用=
:
<xsl:when test="tokenize($style-name,' ') = 'u')">true</xsl:when>
這將所有的空格分隔的令牌轉換成一個序列,並= 'u'
將匹配,如果任何令牌都與'u'匹配。
XSLT 1.1方案
<xsl:template name="tokenize">
<xsl:param name="token" />
<xsl:param name="text"/>
<xsl:if test="string-length($text)">
<token><xsl:value-of select="substring-before(concat($text,$token),$token)"/></token>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="substring-after($text,$token)"/>
<xsl:with-param name="token" select="$token"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
...
<xsl:variable name="tokens">
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="$style-name"/>
<xsl:with-param name="token" select="' '"/>
</xsl:call-template>
</xsl:variable>
<xsl:when test="$tokens/token = 'u'">true</xsl:when>
XSLT 1.0解
要求中包含的每一個主要XSL處理器(包括MSXSL)的延伸部。這個命名空間聲明添加到您的樣式表:
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
並更改@test:
<xsl:when test="msxsl:node-set($tokens)/token = 'u'">true</xsl:when>
對於ESLT感知處理器(撒克遜人,xsltproc的,的Xalan-J,jd.xslt和4XSLT)使用xmlns:exsl="http://exslt.org/common"
和exsl:node-set()
。對於Xalan-C使用xmlns:xalan="http://xml.apache.org/xalan"
和xalan:nodeset()
。
來源
2012-12-20 19:12:43
wst