4

パラメータで取得したものでXMLをフィルタリングしようとしています。dep_codeが「something」またはこの場合は$departmentに等しいコースのみに一致する正しいsintaxは何ですか?

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-PE9.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 に答える