Xml 如何获取其他子节点元素的值
我正在尝试从当前节点获取其他子节点elment的值Xml 如何获取其他子节点元素的值,xml,xslt,xslt-1.0,xslt-2.0,Xml,Xslt,Xslt 1.0,Xslt 2.0,我正在尝试从当前节点获取其他子节点elment的值abc 例如: <root> <child1> <abc-value>abc</abc-value> </child> <child2> <attribute name=def>def</def-value> </child2> </root> abc def XSL: child1值
abc
例如:
<root>
<child1>
<abc-value>abc</abc-value>
</child>
<child2>
<attribute name=def>def</def-value>
</child2>
</root>
abc
def
XSL:
child1值为:
child2值为:
我所要做的就是,从child2模板匹配中,调用child1元素的值abc
排除:
Child1值为:abc
Child2值为:def
<xsl:template name="child2" match="attribute">
child1 value is: <xsl:value-of select="../../child1/abc-value" />
child2 value is: <xsl:value-of select="." />
</xsl:template>
child1值为:
child2值为:
更新:根据对您的问题的编辑:
- 模板现在与
元素匹配 - 由于模板的当前节点(
元素)比以前更深,因此child1值的select表达式将更改为使用附加的。/
child1值为:
child2值为:
更新:根据对您的问题的编辑:
- 模板现在与
元素匹配 - 由于模板的当前节点(
元素)比以前更深,因此child1值的select表达式将更改为使用附加的。/
xsl:value of
语句--太小,SO无法修复。当我使用它时,它会出现以下错误:XPTY0020:无法在此处选择节点:上下文项是原子值更新的child2节点,具有新元素@phani:如前所述,您的模板只能匹配一个元素(无论是
还是
),都不是原子值。原子值是例如数字或字符串(不是元素或文本节点)。因此,您使用的匹配模式一定与您在回答中显示的不同。请告诉我们您实际在做什么,也许我们可以提供帮助。@Larsh您是对的,我发现这是我的模板语法错误。对,+1,但请关闭xsl:value of
语句-太小,因此无法让我修复。当我使用它时,它会得到以下结果:wing错误:XPTY0020:无法在此处选择节点:上下文项是原子值更新的child2节点,带有新元素@phani:如前所述,模板只能匹配元素(无论是
还是
),而不是原子值。原子值是例如数字或字符串(不是元素或文本节点)。因此,您使用的匹配模式一定与您在回答中显示的不同。请告诉我们您实际在做什么,也许我们可以提供帮助。@Larsh您是对的,我发现这是我的模板语法错误。上次编辑后,您的XML格式不再正确。特别是def
。此外,您可能会将自己与在xsl:template
中匹配match
和name
属性。如果确实需要使用命名模板,请选择一个与其中一个输入元素不同的名称。这将使其更容易理解。在上次编辑之前,它的格式也不正确:child1的close标记不能是child。为什么命名新元素nt“attribute”?为什么要继续扩展这个问题?在上次编辑之后,您的XML不再是格式良好的。特别是def
。此外,您可能会将自己与xsl:template
中的match
和name
属性混淆。如果确实需要使用命名模板,请选择一个不同的名称这是一个输入元素。这将使它更容易理解。在上次编辑之前,它的格式也不好:child1的close标记不能是child。为什么要将新元素命名为“attribute”?为什么要继续扩展这个问题?
<xsl:template name="child2" match="attribute">
child1 value is: <xsl:value-of select="../../child1/abc-value" />
child2 value is: <xsl:value-of select="." />
</xsl:template>