Xml XSLT:获取父级的索引

Xml XSLT:获取父级的索引,xml,xslt,Xml,Xslt,我有一个XSLT文件 <xsl: for-each select = "Parent1/Parent2"> <xsl: value-of select = "Child_1"> <xsl: value-of select = "Child_2"> </xsl: for-each> 在本例中,子元素child_1和child_2都将添加到最终的xml文件中 只有当Parent2的索引为4时,我才需要打印Child_2 我怎样才能

我有一个XSLT文件

<xsl: for-each select = "Parent1/Parent2">
    <xsl: value-of select = "Child_1">
    <xsl: value-of select = "Child_2">
</xsl: for-each>

在本例中,子元素child_1和child_2都将添加到最终的xml文件中

只有当Parent2的索引为4时,我才需要打印Child_2

我怎样才能做到这一点

以下是输入xml

<Parent1>
<Parent2>
    <Child_1>Child 1.1</Child_1>
    <Child_2>Child 1.2</Child_2>
</Parent2>
<Parent2>
    <Child_1>Child 2.1</Child_1>
    <Child_2>Child 2.2</Child_2>
</Parent2>
<Parent2>
    <Child_1>Child 3.1</Child_1>
    <Child_2>Child 3.2</Child_2>
</Parent2>
<Parent2>
    <Child_1>Child 4.1</Child_1>
    <Child_2>Child 4.2</Child_2>
</Parent2>
<Parent2>
    <Child_1>Child 5.1</Child_1>
    <Child_2>Child 5.2</Child_2>
</Parent2>
<Parent2>
    <Child_1>Child 6.1</Child_1>
    <Child_2>Child 6.2</Child2>
</Parent2>
</Parent1>

As an output I want
Child_1 1.1
Child_1 2.1
Child_1 3.1
Child_1 4.1
Child_2 4.2
Child_1 5.1
Child_1 6.1

儿童1.1
儿童1.2
儿童2.1
儿童2.2
儿童3.1
儿童3.2
儿童4.1
儿童4.2
儿童5.1
儿童5.2
儿童6.1
儿童6.2
作为我想要的输出
儿童1.1
儿童1.2.1
儿童1 3.1
儿童1 4.1
儿童2 4.2
儿童1 5.1
儿童1 6.1

也许这对你有用:

<xsl:for-each select="Parent1/Parent2">
    <xsl:variable name="i" select="position()" />
    <xsl:value-of select="Child_1"/>
    <xsl:value-of select="Child_2[$i=4]"/>
</xsl:for-each>


它假设只有当表达式
Parent1/Parent2
选择的(整个)节点集中的
Parent2
的位置为4时,您才想输出
Child\u 2
的值。

您可能想执行
但是您可以显示一个输入XML的示例,以确保这一点。谢谢。在这种情况下,将只选择索引4的父项2,而不选择其他项。您的问题并不完全清楚,尤其是“索引”部分。“父母索引2”属于哪一组?--另外,请指出XSLT的哪个版本(只在XSLT2.0中提供
index-of()
函数)。您的示例输出根本没有显示
Child_2
的实例-您到底想做什么?你犯了错误吗?上面写着
Child_1 4.2
应该是
Child_2 4.2
?是的,那是一个打字错误…更正了!谢谢你的回答,迈克尔。我去看看。如果您想查看xml,我已经做了相关的编辑files@OldMonk我担心的是,(a)可能有多个
Parent1
节点,(b)a
Parent1
节点可能有
Parent2
之外的其他子节点。任何一个问题都会导致此问题变得不明确。@OldMonk如果您的问题得到了回答,请通过接受答案来结束它。