XPath 1.0,子树中的第一个节点

XPath 1.0, 1st node in subtree

所以我想做的是识别 xml 树的某个子树中的第一个节点。

这里有一个例子

<?xml version="1.0" encoding="utf-8"?>
<root>
  <road>
    <households>
      <household>
        <occupants>
          <person name="jim"/>
          <person name="jon"/>
          <person name="julie"/>
          <person name="janet"/>
        </occupants>
      </household>
      <household>
        <occupants>
          <person name="brenda"/>
          <person name="bert"/>
          <person name="billy"/>
        </occupants>
      </household>
    </households>
  </road>
  <road>
    <households>
      <household>
        <occupants>
        </occupants>
      </household>
      <household>
        <occupants>
          <person name="arthur"/>
          <person name="aimy"/>
        </occupants>
      </household>
      <household>
        <occupants>
          <person name="harry"/>
          <person name="henry"/>
        </occupants>
      </household>
    </households>
  </road>
</root>

现在我想要每条道路提到的第一个人。

让我们开始吧...

/root/road/households/household/occupants/person[1]/@name

即 returns 每个占用节点的第一个人。

让我们试试

(/root/road/households/household/occupants/person)[1]/@name

那个returns整棵树的第1个人

我想做的是?

/root/road/(households/household/occupants/person)[1]/@name

即在路上取人集合中的第一个人

但这不是有效的 xpath 1.0

这似乎是你想要的,使用后代轴:

/root/road/descendant::person[1]/@name