Xpath для получения 'id' или 'counter' того, какой номер цикла включен для данного выражения xpath - PullRequest
0 голосов
/ 07 июля 2011

Обновлено на основе обратной связи, спасибо -

У меня есть пример, такой как ниже, где при разборе xpath я хотел бы отслеживать, в какой строке я / строки / строки через число илиидентификатор.В настоящее время я пытаюсь перевести XML в реляционный формат, и каждый набор столбцов идентифицируется с помощью «ID строки», номера строки или позиции строки, из которой он получен.

<rows>
<row>
<columns>
<column>
<name>x</name>
<value>val1.x</value>
</column>
<column>
<name>y</name>
<value>val1.y</value>
</column>
<column>
<name>z</name>
<value>val1.z</value>
</column>
</columns>
</row>
<row>
<columns>
<column>
<name>x</name>
<value>val2.x</value>
</column>
<column>
<name>y</name>
<value>val2.y</value>
</column>
<column>
<name>z</name>
<value>val2.z</value>
</column>
</columns>
</row>
<row>
<column>
<name>x</name>
<value>val3.x</value>
</column>
<column>
<name>y</name>
<value>val3.y</value>
</column>
<column>
<name>z</name>
<value>val3.z</value>
</column>
</columns>
</row>
</rows>

1 Ответ

1 голос
/ 09 июля 2011

Предположим, что ваш контекстный узел является элементом <value>, <name>, <column> или <columns>, а элементы <row> не находятся в этом документе вне текущей структуры.Затем следующий XPath даст вам «номер строки»

count(ancestor::row) + count(ancestor::row[1]/preceding-sibling::row)

Индексирование начинается с 1.Если выражение возвращает 0, узел контекста не находится внутри структуры строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...