2012-11-23 76 views
2

我想通過我在參數中得到的內容來過濾XML。 什麼是正確的sintax匹配只有那些dep_code等於'東西'或在這種情況下$部門?xsl模板匹配具有特定值的節點

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 [撒克遜-PE 9.4.0.3]意外標記 「{」 在路徑表達式
  2. F [ Saxon-PE 9.4.0.3] XSLT 模式中不允許使用可變引用(謂詞除外)

在此先感謝

+0

您提供的XML文檔沒有文本節點 - 你希望我們如何處理它以一種有意義的辦法?請編輯問題並提供一個真正的XML文檔(實例),並提供確切的通緝結果。 –

回答

5

示例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>