Квадратные скобки []
содержат предикат (аналогично WHERE
в запросе SQL).
Ваше выражение $body/root[/record[2]]
можно принять за
- Начните с
body
- , возьмите любое
root
, но только если на позиции 2
вы, вероятно, хотите $body/root/record[2]
, то есть
- Начать с
body
- взять любое
root
- взять любое
record
, но вернуть только второе record
Если вы не можете указать фиксированную позицию, вы можете сделать что-то вроде этого:
$body/root/record[(e2/text())[1]='0000']
То есть
- Начать с
body
- взять любое
root
- взять любое
record
, но вернуть только те, для которых e2
имеет заданное значение
ОБНОВЛЕНИЕ: Вернуться к вашей проблеме
Вы хотите получить два разных компонента из вашего XML.Вам придется использовать два XPath
выражения
Вы можете использовать что-то вроде этого
/root/timestamp | /root/record[2]
или это
<root>
{/root/timestamp[1]}
{/root/record[2]}
</root>