変身したい
<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ノードのマージは、xml / xslt内の同じノードの子のグループ化/マージと同様に、質問への回答に近づきますが、それらは私が必要としているものではありません。
これまでのところ:
<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>
前もって感謝します!