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' を持つ 1 つ以上の role 要素があるかどうかを調べたいと仮定すると: (Saxon で動作)

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

$rolesMicrosoft などの特定のパーサーでは、次のように を使用して、パーサーに結果ツリー フラグメントであることを伝える必要がある場合があることに注意してください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 に答える