我想变身
<entry>
<parent1>
<object_id>1580</object_id>
</parent1>
<parent1>
<object_id>1586</object_id>
</parent1>
<parent2>
<object_id>1582</object_id>
</parent2>
<parent2>
<object_id>1592</object_id>
</parent2>
</entry>
进入
<entry>
<parent1>1580-1586</parent1>
<parent2>1582-1592</parent2>
</entry>
顶级条目名称未知。父节点名称未知,同名父节点的数量可能会有所不同。子节点称为“object_id”。
所以,我想以抽象的方式对未知的父母进行分组,并连接子节点值,用“-”分隔。
使用 XSLT 合并 XML 节点接近于回答这个问题,就像Group/merge 中相同节点的子节点一样,但它们并不是我所需要的。
到目前为止,我有:
<xsl:key name="groupName" match="*[object_id]" use="."/>
<xsl:template match="*[generate-id(.) = generate-id(key('groupName', .))]">
<xsl:copy>
<xsl:call-template name="join">
<xsl:with-param name="list" select="object_id" />
<xsl:with-param name="separator" select="'-'" />
</xsl:call-template>
</xsl:copy>
</xsl:template>
<xsl:template name="join">
<xsl:param name="list" />
<xsl:param name="separator"/>
<xsl:for-each select="$list">
<xsl:value-of select="." />
<xsl:if test="position() != last()">
<xsl:value-of select="$separator" />
</xsl:if>
</xsl:for-each>
</xsl:template>
提前致谢!