2014-10-27 39 views
0

我正嘗試按兩個字段之一排序XML節點集,條件是另一個字段中的值。按兩個字段中的一個進行排序

<xsl:for-each select="CampusCourseDeliveryItem"> 
    <xsl:sort select="OffCampus"/> 
    <xsl:sort select="OrganisationName" /> 
    <xsl:sort select="OffCampusLocation"/> 

<!-- code to display node goes here --> 

我想,如果OffCampus='Y',使用OffCampusLocation作爲排序關鍵字,否則使用OrganisationName

示例數據:

<CampusCourseDelivery> 
    <CampusCourseDeliveryItem> 
     <OrganisationName>Chicago</OrganisationName> 
     <OffCampus>N</OffCampus> 
     <OffCampusLocation></OffCampusLocation> 
    </CampusCourseDeliveryItem> 
    <CampusCourseDeliveryItem> 
     <OrganisationName>London</OrganisationName> 
     <OffCampus>Y</OffCampus> 
     <OffCampusLocation>Detroit</OffCampusLocation> 
    </CampusCourseDeliveryItem> 
    <CampusCourseDeliveryItem> 
     <OrganisationName>Seattle</OrganisationName> 
     <OffCampus>Y</OffCampus> 
     <OffCampusLocation>Berlin</OffCampusLocation> 
    </CampusCourseDeliveryItem> 
    <CampusCourseDeliveryItem> 
     <OrganisationName>Adelaide</OrganisationName> 
     <OffCampus>N</OffCampus> 
     <OffCampusLocation>Ignore this value</OffCampusLocation> 
    </CampusCourseDeliveryItem> 
</CampusCourseDelivery> 

預期排序順序:

Adelaide 
Berlin 
Chicago 
Detroit 

回答

3

排序由下式:

concat(
substring(OffCampusLocation, 1, string-length(OffCampusLocation) * (OffCampus='Y')), 
substring(OrganisationName, 1, string-length(OrganisationName) * (OffCampus='N'))  
) 
+0

這幾乎是* *工作...我不得不改變' OffCampus ='N''到'normalize-space(OffCampus)!='Y''來處理OffCampus爲空的情況。 (在我的示例數據中,我沒有舉一個例子,所以你沒有照顧它。) – Adeptus 2014-10-27 01:37:05

相關問題