找到父母的兄弟姐妹的xpath

时间:2020-06-24 11:44:57

标签: xml xslt xpath

我有这个输入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处理器。 谢谢!

3 个答案:

答案 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节点。