【发布时间】:2019-08-19 23:56:02
【问题描述】:
我继承了代码,但我不完全理解它为什么不起作用,但我也希望它做更多的事情。明显的问题是group-by 永远不会找到一个组,因为它正在寻找的属性始终是每个项目的唯一值。除此之外,我还在寻找自然顺序排序。据我所知,我想我可能需要先按字母对组进行排序,然后按数字对结果进行排序,但我不确定。目前,即使是那里的基本排序也不起作用。现有的 XSLT 代码是:
<xsl:for-each-group select="datafield[@tag='856']" group-by="subfield[@code='u']">
<xsl:sort select="number(normalize-space(substring-after(subfield[@code='z'], ',')))"/>
<xsl:copy-of select="."/>
</xsl:for-each-group>
使用这些数据:
<collection>
<record>
<datafield ind1="4" ind2="1" tag="856">
<subfield code="u">https://www.example.com/ride02meys</subfield>
<subfield code="z">Digital item, v.2</subfield>
</datafield>
<datafield ind1="4" ind2="1" tag="856">
<subfield code="u">https://www.example.com/ride01meys</subfield>
<subfield code="z">Digital item, v.1</subfield>
</datafield>
<datafield ind1="4" ind2="1" tag="856">
<subfield code="u">https://www.example.com/ride12meys</subfield>
<subfield code="z">Digital item, v.12</subfield>
</record>
</collection>
我正在尝试获取以下内容,其中排序为 1、2、12,而不是 1、12、2。
<collection>
<record>
<datafield ind1="4" ind2="1" tag="856">
<subfield code="u">https://www.example.com/ride01meys</subfield>
<subfield code="z">Digital item, v.1</subfield>
</datafield>
<datafield ind1="4" ind2="1" tag="856">
<subfield code="u">https://www.example.com/ride02meys</subfield>
<subfield code="z">Digital item, v.2</subfield>
</datafield>
<datafield ind1="4" ind2="1" tag="856">
<subfield code="u">https://www.example.com/ride12meys</subfield>
<subfield code="z">Digital item, v.12</subfield>
</record>
</collection>
我承认 XSLT 很弱,所以任何指导都将不胜感激。
谢谢,提前
【问题讨论】:
标签: xml xslt xslt-2.0 xslt-grouping