我想創建根據查詢字符串傳遞的參數一個新的XML(過濾XML)。
URL示例:search_advanced.xhtml部門= CHEM &提供= Y &水平= P
例如,如果上面的查詢字符串傳遞,我會想過濾的XML只顯示那些課程?包含
- 甲部門中等於CHEM(fas_courses /當然/部門/ @代碼)
- 一種提供代碼等於Y(fas_course /當然/ @提供)
- A Level課程代碼等於P(fas_course /場/ @提供)
原始的XML文件和XSLT文件我一直在努力如下。感謝您的任何建議。
原始XML
<fas_courses>
<course acad_year="2012" cat_num="85749" offered="N" next_year_offered="2013">
<term term_pattern_code="4" fall_term="Y" spring_term="Y">full year</term>
<department code="VES">
<dept_long_name>Department of Visual and Environmental Studies</dept_long_name>
<dept_short_name>Visual and Environmental Studies</dept_short_name>
</department>
<course_group code="VES">Visual and Environmental Studies</course_group>
<title>Critical Media Practice: Non Fiction Filmmaking Workshop</title>
<course_type>Studio</course_type>
<course_level code="G">Graduate Course</course_level>
<description>A graduate workshop for Film Study Center non-fiction film and video projects.</description>
</course>
<course>
.....
</course>
<course>
.....
</course>
</fas_courses>
XSL文件
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:param name="url"/>
<xsl:param name="querystring"/>
<xsl:param name="baselink"/>
<xsl:param name="department" select="'All'"/>
<xsl:param name="course_group" select="'All'"/>
<xsl:param name="description" select="'All'"/>
<xsl:param name="level" select="'All'"/>
<xsl:param name="term" select="'All'"/>
<xsl:param name="offered" select="'All'"/>
<xsl:template match="/">
<fas_courses>
<xsl:apply-templates />
</fas_courses>
</xsl:template>
<xsl:template match="//course
[
($department = '' or $department = 'All' or department/@code = $department)
and
($course_group = '' or $course_group = 'All' or course_group/@code = $course_group)
and
($description = '' or $description = 'All' or description = $description)
and
($level = '' or $level = 'All' or course_level/@code = $level)
and
($term = '' or $term = 'All' or term/@term_pattern_code = $term)
and
($offered = '' or $offered = 'All' or @offered = $offered)
]">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>