Как использовать рекурсивный И условный выбор в XPath?Условия на рекурсивные XPath
Например, если этот документ:
<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<file name="foo.mp4">
<chunks>
<file>
<chunks>
<file>
<chunks>
<file>1</file>
<file>2</file>
<file>3</file>
<file>4</file>
</chunks>
</file>
<file>
<chunks>
<file>5</file>
<file>6</file>
<file>7</file>
<file>8</file>
</chunks>
</file>
</chunks>
</file>
<file>
<chunks>
<file>
<chunks>
<file>9</file>
<file>10</file>
<file>11</file>
<file>12</file>
</chunks>
</file>
<file>
<chunks>
<file>13</file>
<file>14</file>
<file>15</file>
<file>16</file>
</chunks>
</file>
</chunks>
</file>
</chunks>
</file>
</root>
Я хотел бы, чтобы выбрать только:
<file>1</file>
<file>2</file>
<file>3</file>
<file>4</file>
Таким образом, эффективно это:
//[name="foo.mp4"]/chunks/*[1]/chunks/*[1]/*
Но с обобщенным подходом - - то есть то, что будет охватывать даже более глубоко вложенные объекты. Что-то вроде этого:
//[name="foo.mp4"]/(chunks/*[1]/)+/*
(cond)+
не XPath синтаксис, и регулярное выражение, как представление о том, что я хочу.
Извините, но это очень плохое требование . Вы эффективно говорите «если вход 17, тогда я хочу, чтобы ответ был 23, но я хочу, чтобы это обобщалось для работы с любым вводом». Вы должны дать нам общее правило для вычисления выхода из ввода; мы не можем сделать это из одного примера. –