xsl模板匹配具有特定值的节点

Cri*_*sty 4 xslt xslt-2.0

我试图通过参数中的内容过滤XML.什么是正确的sintax匹配只有那些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>
Run Code Online (Sandbox Code Playgroud)

参数定义

<xsl:param name="department" select="'All'" />
Run Code Online (Sandbox Code Playgroud)

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

<xsl:template match="course/dep_code/{$department}">
Run Code Online (Sandbox Code Playgroud)

这个:

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


<xsl:template match="course/dep_code eq $department">
Run Code Online (Sandbox Code Playgroud)

我继续得到如下语法错误:

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

提前致谢

小智 8

示例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>
Run Code Online (Sandbox Code Playgroud)

示例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>
Run Code Online (Sandbox Code Playgroud)

结果

<html>
<body>
<table border="1">
<tr><th>dep_code</th></tr>
<tr><td>something</td></tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)