过滤使用下拉列表绑定的XML节点

时间:2012-05-07 21:11:00

标签: xslt xpath filtering xmldatasource

我有两个DropDownList:1)CollegeDDL,其中包含四个学院的静态名称。 :顺势疗法医学院,物理治疗学院,阿育吠陀研究所,工商管理学院

2)CourseDDL绑定到CourseDetail.XML。

    <Institutes>  
    <Institute>
    <InstituteName>  Homoeopathic Medical College  </InstituteName>
    <Course> <CourseName>  BHMS                    </CourseName> </Course>  
    <Course> <CourseName>  MD(Repertary)           </CourseName> </Course>  
    <Course> <CourseName>  MD(Organon of Medicine) </CourseName> </Course>  
    <Course> <CourseName>  MD(Materia Medica)      </CourseName> </Course>  
    </Institute>

    <Institute>
    <InstituteName>  Physiotherapy College  </InstituteName>
    <Course> <CourseName>  BPT          </CourseName> </Course> 
    <Course> <CourseName>  BPT(Sports)  </CourseName> </Course> 
    <Course> <CourseName>  BPT(Cardio)  </CourseName> </Course>
    </Institute>

    <Institute>
    <InstituteName>  Institute of Ayurved  </InstituteName>
    <Course> <CourseName>  BAMS          </CourseName> </Course>
    <Course> <CourseName>  BAMS(Nature)  </CourseName> </Course>
    <Course> <CourseName>  BAMS(Plants)  </CourseName> </Course>
    </Institute>

    <Institute>
    <InstituteName> Institute of Business Administration </InstituteName>
    <Course> <CourseName>BBA</CourseName> </Course> 
    <Course> <CourseName>DBM</CourseName> </Course> 
    <Course> <CourseName>BBA(Distance)</CourseName> </Course>   
    </Institute>

CourseDetail.XSL

    <xsl:template match ="/">

    <Institute>
    <xsl:apply-templates select ="Institutes/Institute/Course"/>
    </Institute>

    </xsl:template>


    <xsl:template match ="Institutes/Institute/Course">
    <Institute>
    <xsl:attribute name="CourseName">
    <xsl:value-of select="CourseName"/>
    </xsl:attribute>
    </Institute>

    </xsl:template>

我已将Coursedetail.XML绑定到CourseDDL和CourseDetail.XSL(无XPATH表达式)

执行此操作后,My CourseDDL正确填充了我的XML文件的所有CourseName值。 但现在我想根据在CollegeDDL中选择的College Name过滤绑定到CourseDDL的数据。

例如:目前我的CourseDDL包含所有课程名称:BHMS,MD(Repertary),MD(医学组织),......,DBM,BBA(距离)。

但是当我在CollegeDDL中选择“Homoeopathic Medical College”时,绑定到CourseDDL的数据应该相应地过滤。 这意味着当我选择“Homoeopathic Medical College”时,我的CourseDDL应仅显示该课程:BHMS,MD(Repertary),MD(医学组织),MD(Materia Medica)


我尝试了以下方法,但无法实现。

    1) XmlDataSourceCourse.XPath = "/Institutes/Institute[InstituteName='" +         CollegeDDL.SelectedItem.Value + "']"

    2) XmlDataSourceCourse.XPath = "/Institutes/Institute[InstituteName='" +         CollegeDDL.SelectedItem.Value + "']/Course"

    3)XmlDataSourceCourse.XPath = "/Institutes/Institute[InstituteName='" + CollegeDDL.SelectedItem.Value + "']/Course/CourseName"

任何人请帮助格式化正确的XPATH表达式以实现此目的。

1 个答案:

答案 0 :(得分:0)

我认为帕维尔是对的,问题是空间 - 尝试:

/Institutes/Institute[normalize-space(InstituteName)='" + CollegeDDL.SelectedItem.Value + "']/Course/CourseName

甚至

/Institutes/Institute[normalize-space(InstituteName)=normalize-space('" + CollegeDDL.SelectedItem.Value + "')]/Course/CourseName