xml – 如何与xslt中的多个字符串进行比较

前端之家收集整理的这篇文章主要介绍了xml – 如何与xslt中的多个字符串进行比较前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为了将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>

猜你在找的XML相关文章