我的xml具有相似的结构:
<Info>
<parents>
<parent1>
<id>1</id>
</parent1>
<parent2>
<id>2</id>
</parent2>
</parents>
<children>
<child>
<id>1</id>
<parentID>
1
</parentID>
<someInfoFromOneNode>
qqq
</someInfoFromOneNode>
</child>
<child>
<id>1</id>
<parentID>
1
</parentID>
<someInfoFromAnOtherNode>
qqq
</someInfoFromAnOtherNode>
</child>
<child>
<id>2</id>
<parentID>
2
</parentID>
<someInfoFromOneNode>
qqq
</someInfoFromOneNode>
</child>
<child>
<id>2</id>
<parentID>
2
</parentID>
<someInfoFromAnOtherNode>
qqq
</someInfoFromAnOtherNode>
</child>
</children>
</Info>
我需要使用该结构的xml:
<Info>
<parent>
<id>1</id>
<children>
<chidl>
<id>1</id>
<someInfoFromOneNode>
qqq
</someInfoFromOneNode>
<someInfoFromAnOtherNode>
qqq
</someInfoFromAnOtherNode>
</chidl>
</children>
</parent>
<parent>
<id>2</id>
<children>
<chidl>
<id>2</id>
<someInfoFromOneNode>
qqq
</someInfoFromOneNode>
<someInfoFromAnOtherNode>
qqq
</someInfoFromAnOtherNode>
</chidl>
</children>
</parent>
</Info>
因此,我需要收集一位父母的所有孩子,此外还需要收集与一位孩子有关的信息。我试图过滤像这样的孩子,并至少显示孩子的id(我保留parentId):
<children>
<xsl:for-each select="/Info/children/child">
<xsl:if test="./price_groups_id = $parentId and not(./id = preceding-sibling::id)">
<child>
<id>
<xsl:value-of select="./id"/>
</id
</child>
</xsl:if>
</xsl:for-each>
</children>
但是它仅按父ID过滤子对象并复制它们,因此当前结果是:
<Info>
<parent>
<id>1</id>
<children>
<child>
<id>1</id>
</child>
<child>
<id>1</id>
</child>
</children>
</parent>
<parent>
<id>2</id>
<children>
<child>
<id>2</id>
</child>
<child>
<id>2</id>
</child>
</children>
</parent>
</Info>
我该如何检查先前的节点ID并对其进行过滤?