Я хочу изменить значения @page
атрибутов <line/>
, которые являются потомками от <section type="cover"/>
до (max(@page) + 1)
из <section type="contents"/>
.
В основном мне нужно, чтобы номер страницы для раздела обложки был на 1 больше, чем последний числовой номер страницы раздела содержимого.
Примечание: <line/>
узлы не всегда являются братьями и сестрами, они могут быть вложены на любом уровне.
Например, преобразовать это:
<root>
<section type="contents">
<line page="i">text</line>
<line page="ii">text</line>
<line page="1">text</line>
<line page="1">text</line>
<line page="2">text</line>
<block>
<line page="3">text</line>
<line page="4">text</line>
</block>
</section>
<section type="cover">
<line page="i">text</line>
<line page="i">text</line>
</section>
</root>
к этому:
<root>
<section type="contents">
<line page="i">text</line>
<line page="ii">text</line>
<line page="1">text</line>
<line page="1">text</line>
<line page="2">text</line>
<block>
<line page="3">text</line>
<line page="4">text</line>
</block>
</section>
<section type="cover">
<line page="5">text</line> <!-- @page changes to max()+1 -->
<line page="5">text</line> <!-- @page changes to max()+1 -->
</section>
</root>
Есть ли простой способ добиться этого с помощью PHP5, XSLT1.0, XPATH?