【发布时间】:2022-01-02 06:57:04
【问题描述】:
以下代码用于输出在其他组中找到的“g”中的行李编号。有什么方法可以使用xsl:key 达到同样的效果吗?理想情况下,“g”将是一个参数,因此我不必为“h”、“i”等重复类似的代码。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<g>
<bagn>A</bagn>
<bagn>B</bagn>
</g>
<h>
<bagn>C</bagn>
<bagn>D</bagn>
<bagn>A</bagn>
</h>
<i>
<bagn>B</bagn>
<bagn>F</bagn>
<bagn>G</bagn>
</i>
</root>
<xsl:variable name="gDups">
<xsl:for-each select="/root/g/bagn[.=/root/node()[not(self::g)]/bagn]">
<xsl:choose>
<xsl:when test="position()=1">
<xsl:value-of select="concat('|',.,'|')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(.,'|')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$gDups"/>
【问题讨论】:
-
您是否看过 XSLT 中的键简介并尝试一下?至于使用
g的参数,还请告诉我们您使用的是哪个版本的 XSLT 和/或哪个 XSLT 处理器。 -
我正在为 Xalan 使用 XSLT 版本 1
-
您打算如何传递参数?作为包含元素名称的字符串?可以有两个同名的兄弟元素吗?
-
我不知道是否可以将其作为参数传递。这是我的问题的一部分。
-
你想要的结果是什么?为
root的每个孩子生成重复列表并不难。