0

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>
4

1 回答 1

2

假设您要查找roles元素是否具有一个或多个角色元素,其中 text = 'HOBSCS1GB':(在撒克逊工作)

<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>
于 2012-11-08T15:20:23.590 回答