XSLT2.0ソリューション
トークンのシーケンスに分割し、以下を使用して比較し=
ます。
<xsl:when test="tokenize($style-name,' ') = 'u')">true</xsl:when>
これにより、スペースで区切られたすべてのトークンがシーケンスに変換され、= 'u'
いずれかのトークンが「u」に一致する場合に一致します。
XSLT1.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>
XSLT1.0ソリューション
すべての主要なXSLプロセッサ(MSXSLを含む)に含まれている拡張機能が必要です。この名前空間宣言をスタイルシートに追加します。
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
そして、@ testを変更します:
<xsl:when test="msxsl:node-set($tokens)/token = 'u'">true</xsl:when>
ESLT対応プロセッサ(Saxon、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()
ます。