为了将xml字符串值与多个字符串进行比较,我正在执行以下操作.
<xsl:if test="/Lines/@name = 'John' or /Lines/@name = 'Steve' or /Lines/@name = 'Marc' " >
任何人都可以告诉我,而不是在上述情况下使用’或’,如何使用xslt来检查字符串是否存在于一组字符串中.
谢谢.
这样做的三种方式:
>使用管道(或其他适当的字符)分隔的字符串
…
<xsl:template match= "Lines[contains('|John|Steve|Mark|',concat('|',@name,'|') ) ] "> <!-- Appropriate processing here --> </xsl:template>
0.2.测试外部传递的参数.如果参数不是外部设置的,而且我们使用XSLT 1.0,则需要使用xxx:node-set()扩展函数将其转换为正常的节点集,然后才能访问它的子节点
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <!-- externally-specified parameter --> <xsl:param name="pNames"> <n>John</n> <n>Steve</n> <n>Mark</n> </xsl:param> <xsl:template match="Lines"> <xsl:if test="@name = $pNames/*"> <!-- Appropriate processing here --> </xsl:if> </xsl:template> </xsl:stylesheet>
0.3.在XSLT 2.0中与一串字符串进行比较
<xsl:template match="Lines[@name=('John','Steve','Mark')]"> <!-- Appropriate processing here --> </xsl:template>