【发布时间】:2018-11-17 03:53:25
【问题描述】:
使用 XSLT 2.0 和 Apache FOP 我希望能够创建一个新变量,在其中具有唯一且按 category 排序的值,但保留节点。所以新变量应该有以下节点:
<category>1. First Aid</category>
<category>2. Access control</category>
<category>3. Fire safety</category>
<category>4. Recognition</category>
输入的 XML 如下:
<equipment>
<E0132>
<category>1. First Aid</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E0132>
<E0133>
<category>1. First Aid</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E0133>
<E4122>
<category>3. Fire safety</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E4122>
<E4182>
<category>3. Fire safety</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E4182>
<E4622>
<category>2. Access control</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E4622>
<E5225>
<category>4. Recognition</category>
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</description>
</E5225>
</equipment>
关于 XSL,这是我目前所拥有的:
<xsl:variable name="equipment">
<xsl:for-each-group select="//equipment/node()" group-by="category">
<xsl:sort select="." order="ascending" />
<xsl:value-of select="."/>
</xsl:for-each-group>
</xsl:variable>
但它没有按预期工作。它不包含我想要的category 节点,我不知道如何在这里集成distinct-values() XSL 功能以实现唯一性。
【问题讨论】:
-
您应该(可能)使用
xsl:copy-of而不是xsl:value-of。但是,根据您实际尝试解决的问题,也许您根本不需要变量。如果您只是想创建某种“查找”,也许xsl:key可以成为您的朋友?它将帮助您显示您期望的输出,并解释您在此处尝试实现的实际逻辑。谢谢!
标签: sorting xslt grouping unique