我有这个输入xml。这是我当前的xpath root/Message/Item/IPList/ItemPac
。从这个xpath中,我想选择<HndlAttrAct></HndlAttrAct>
这个标签的值。相对于当前xpath的xpath是什么。
<root>
<Message>
<Item>
<IPList>
<ItemPac>
<PkgUOM>Unit</PkgUOM>
</ItemPac>
</IPList>
<ItemTms>
<ItemValue>.01</ItemValue>
</ItemTms>
<ItemW>
<HndlAttrAct>HAA</HndlAttrAct>
<UnitsPerPickAct></UnitsPerPickAct>
</ItemW>
</Item>
</Message>
</root>
注意-我正在使用xslt 1.0处理器。 谢谢!
答案 0 :(得分:1)
使用parent::*
,您可以遍历父元素并往回走:
root/Message/Item/IPList/ItemPac/parent::*/parent::*/ItemW/HndlAttrAct/text()
要仅获取元素而不获取值,只需删除text()
:
root/Message/Item/IPList/ItemPac/parent::*/parent::*/ItemW/HndlAttrAct``
答案 1 :(得分:1)
从ItemPac
的上下文中,您可以使用以下命令在同一HndlAttrAct
中获得Item
的值:
<xsl:value-of select="../../ItemW/HndlAttrAct"/>
或:
<xsl:value-of select="ancestor::Item/ItemW/HndlAttrAct"/>
答案 2 :(得分:0)
关于示例XML的另一个选项:
<xsl:value-of select="../following-sibling::ItemW/HndlAttrAct"/>
选择当前节点的父节点,然后选择同级ItemW
的子节点。
<xsl:value-of select="following::ItemW/HndlAttrAct"/>
选择后一个ItemW
中的第一个孩子。
<xsl:value-of select="following::HndlAttrAct"/>
甚至更短,请选择以下HndlAttract
节点。