目前,您的$tlds变量不是一个数组,而是一个简单的字符串。你可以做的是像这样设置变量,使它更像一个数组
<xsl:variable name="tlds">
<tld>.com</tld>
<tld>.net</tld>
<tld>.org</tld>
<tld>.edu</tld>
<tld>.ly</tld>
</xsl:variable>
然后在 XSLT 样式表中定义另一个变量来引用这个变量
<xsl:variable name="lookup" select="document('')//xsl:variable[@name='tlds']"/>
然后,要查找$tlds变量中是否存在单词,只需执行以下操作:
<xsl:if test="$lookup/tld=$word">
The current word being checked contained an item in the array!
</xsl:test>
编辑:或者,如果您想检查一个单词是否包含数组中的一项,您可以这样做:
<xsl:if test="$lookup/tld[contains($word, .)]">
The current word being checked contained an item in the array!
</xsl:test>
例如,这里有一些 XSLT 充分展示了这一点
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="tlds">
<tld>.com</tld>
<tld>.net</tld>
<tld>.org</tld>
<tld>.edu</tld>
<tld>.ly</tld>
</xsl:variable>
<xsl:variable name="lookup" select="document('')//xsl:variable[@name='tlds']"/>
<xsl:template match="description">
<xsl:call-template name="checkword">
<xsl:with-param name="word">www.pie.com</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="checkword">
<xsl:with-param name="word">www.pie.co.uk</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="checkword">
<xsl:param name="word"/>
<xsl:choose>
<xsl:when test="$lookup/tld[contains($word, .)]">
<xsl:value-of select="$word" /> is contained an item in the array!
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$word" /> is not in the array
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
这应该输出以下内容:
www.pie.com is contained an item in the array!
www.pie.co.uk is not in the array