我正在尝试按字母顺序对字段进行排序(在本例中为 VICINITY),但如果不存在(VICINITY),我需要考虑另一个字段(ITA_LIGHT_NAME),从而创建两个嵌套排序。
我创建了这个 xslt:
<xsl:text>List A<xsl:text>
<xsl:for-each select="//VICINITY[not(. = preceding::VICINITY)]">
<xsl:sort select="." data-type="text" order="ascending"/>
<xsl:sort select="preceding-sibling::ITA_LIGHT_NUMBER" data-type="text" order="ascending"/>
<xsl:variable name ="localita" select="."/>
<xsl:value-of select="."/>
<br/>
</xsl:for-each>
<br/>
<xsl:text>List B<xsl:text>
<xsl:for-each select="//ITA_LIGHT_NAME[not(. = preceding::ITA_LIGHT_NAME)]">
<xsl:if test="not(preceding-sibling::VICINITY)">
<xsl:value-of select="."/><br/>
</xsl:if>
</xsl:for-each>
这给出了两个结果(列表 A 和列表 B 分为两个不同的列表):
List A
ANCONA (Only one time)
GENOVA
MESSINA
VENEZIA
List B
Capo Peloro
Capo Rizzuto (Only one time)
但是,我真的很想作为最终输出一个列表(按字母顺序排序):
ANCONA (Only one time)
Capo Peloro
Capo Rizzuto (Only one time)
GENOVA
MESSINA
VENEZIA
实际上,应该按以下方式工作:如果存在,则按 VICINITY 的字母顺序(不重复),如果不存在,则按 ITA_LIGHT_NAME 的顺序(不重复)。
这是我的 XML,你能帮忙模拟一下这个输出吗:
<SECTION_CONTENT_LIST>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>3921.9</ITA_LIGHT_NUMBER>
<VICINITY>ANCONA</VICINITY>
<ITA_LIGHT_NAME>Installazioni 1</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>3924</ITA_LIGHT_NUMBER>
<VICINITY>ANCONA</VICINITY>
<ITA_LIGHT_NAME>Installazioni 2</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>1577</ITA_LIGHT_NUMBER>
<VICINITY>GENOVA</VICINITY>
<ITA_LIGHT_NAME>Granarolo</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>2746</ITA_LIGHT_NUMBER>
<VICINITY>MESSINA</VICINITY>
<ITA_LIGHT_NAME>Meda elastica</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>4231.4</ITA_LIGHT_NUMBER>
<VICINITY>VENEZIA</VICINITY>
<ITA_LIGHT_NAME>Segnale da nebbia</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>2736</ITA_LIGHT_NUMBER>
<ITA_LIGHT_NAME>Capo Peloro</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>3396</ITA_LIGHT_NUMBER>
<ITA_LIGHT_NAME>Capo Rizzuto</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
<SECTION_CONTENT_LIST_ITEM>
<NTC_LIGHTLISTPRODUCT>
<ITA_LIGHT_NUMBER>3399</ITA_LIGHT_NUMBER>
<ITA_LIGHT_NAME>Capo Rizzuto</ITA_LIGHT_NAME>
</NTC_LIGHTLISTPRODUCT>
</SECTION_CONTENT_LIST_ITEM>
</SECTION_CONTENT_LIST>