4

我正在尝试通过我在参数中获得的内容来过滤 XML。仅在 dep_code 等于“某物”或在本例中为 $department 的那些课程上匹配的正确语法是什么?

XML 结构是

     <course>
         <dep_code></dep_code>
         <catalog_number></catalog_number>
         <course_group></course_group>
         <term></term>
         <offered></offered>
         <course_type></course_type>
         <course_level></course_level>
         <title></title>
         <course_number></course_number>
         <meeting_text></meeting_text>
         <faculty_text></faculty_text>
         <description></description>
         <prerequisites></prerequisites>

      </course>

参数定义

<xsl:param name="department" select="'All'" />

我试过的代码我 试过这个:

<xsl:template match="course/dep_code/{$department}">

还有这个:

<xsl:template match="course/dep_code/$department">


<xsl:template match="course/dep_code eq $department">

II 不断收到如下语法错误:

  1. F [Saxon-PE 9.4.0.3] 路径表达式中的意外标记“{”
  2. F [Saxon-PE 9.4.0.3] XSLT 模式中不允许变量引用(谓词除外)

提前致谢

4

1 回答 1

9

示例 XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<courses>
      <course>
         <dep_code>not_it</dep_code>
         <catalog_number></catalog_number>
         <prerequisites></prerequisites>
      </course>
      <course>
         <dep_code>something</dep_code>
         <catalog_number></catalog_number>
         <prerequisites></prerequisites>
      </course>
</courses>

示例 XSLT

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
    <table border="1">
      <tr>
        <th>dep_code</th>
      </tr>
      <xsl:for-each select="courses/course">
        <xsl:if test="dep_code[text()='something']">
      <tr>
        <td><xsl:value-of select="dep_code"/></td>
      </tr>
        </xsl:if>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

结果

<html>
<body>
<table border="1">
<tr><th>dep_code</th></tr>
<tr><td>something</td></tr>
</table>
</body>
</html>
于 2012-11-23T23:21:01.430 回答