如何使用xml匹配子元素的属性并调用父属性?

时间:2014-12-05 05:52:26

标签: xml xslt if-statement foreach

XML

<school>
<courses>
<course credits="3" courseNum="COMP2899" name="XML for Developers" url="http://www.bcit.ca/study/outlines/comp2899">
  <prereqs>
    <prereq courseNum="COMP1850"/>
  </prereqs>
</course>
<course credits="3" courseNum="COMP1850" name="Introduction to Web Development and Design" url="http://www.bcit.ca/study/outlines/comp1850">
  <prereqs>
    <prereq courseNum="COMP1002"/>
  </prereqs>
</course>
</courses>
</school>

XSL

    <xsl:for-each select="./school/courses/course">
      <xsl:sort select="./@courseNum" order="ascending" data-type="text"/>
      <xsl:if test="./prereqs/prereq/@courseNum = COMP1850">
          <tr>
            <td><xsl:value-of select="@courseNum"/></td>
            <td><a target="_blank" href="{key('courseKey', @courseNum)/@url}">
                <xsl:value-of select="./@name"/></a></td>
          </tr>
      </xsl:if>
    </xsl:for-each>

如果课程courseNum, url and nameprereqs courseNum,我想打电话给COMP1850,但不知怎的,我一直在尝试一些事情或者它不做一件事或所有页面都是空白的。

所以基本上如果我的prereq元素的courseNum attr是COMP1850,那么我想调用course元素的attr值。

有人可以帮我一把吗?谢谢

1 个答案:

答案 0 :(得分:1)

您错过了将字面值COMP1850放在单引号中。

<xsl:if test="./prereqs/prereq/@courseNum = 'COMP1850'">