在XSL文件中检索XML变量,如果找到则说“是”

时间:2012-11-08 15:13:10

标签: html xml xslt xpath

我遇到了Xpath表达式test =“$ roles / roles / role ='HOBSCS1GB'”的问题。任何人都可以帮助解决。感谢

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 

  <xsl:template match="/"> 

    <xsl:variable name="roles"> 
  <roles> 
    <role>HOBSCS1ROI</role> 
    <role>HOBSCS1GB</role> 
    <role>HOBSCS1FT</role> 
  </roles> 
    </xsl:variable> 

    <xsl:if test="$roles/roles/role='HOBSCS1GB'">
      <xsl:value-of select="'YES'"/>
    </xsl:if> 

  </xsl:template> 
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:2)

假设您要查找roles元素是否包含一个或多个text ='HOBSCS1GB'的角色元素:(在Saxon中工作)

<xsl:if test="$roles/roles[role='HOBSCS1GB']">
  <xsl:value-of select="'YES'"/>
</xsl:if>

请注意,像Microsoft这样的某些解析器可能要求您使用$roles告诉解析器node-set()是结果树片段,如下所示:(在msxsl中工作)

<xsl:stylesheet ... xmlns:msxsl="urn:schemas-microsoft-com:xslt" ... />

<xsl:if test="msxsl:node-set($roles)/roles[role='HOBSCS1GB']">
  <xsl:value-of select="'YES'"/>
</xsl:if>

或者在xsltproc中:

<xsl:stylesheet ... xmlns:exsl="http://exslt.org/common" ... />

<xsl:if test="exsl:node-set($roles)/roles[role='HOBSCS1GB']">
  <xsl:value-of select="'YES'"/>
</xsl:if>