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
Это * почти * работал ... Я должен был изменить ' OffCampus = 'N'' для 'normalize-space (OffCampus)! =' Y'' для обработки случаев, когда OffCampus имеет значение NULL. (Который я не привел пример из моих данных примера, настолько справедливо, что вы не удовлетворяли его.) – Adeptus