Xml XSLT:获取父级的索引
我有一个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 我怎样才能
<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)aParent1
节点可能有Parent2
之外的其他子节点。任何一个问题都会导致此问题变得不明确。@OldMonk如果您的问题得到了回答,请通过接受答案来结束它。