У меня есть некоторый входной длинный (около 3 тыс. Строк) XML-документ, который обычно выглядит следующим образом:
<chapter someAttributes="someValues">
<title>someTitle</title>
<p>multiple paragraphs</p>
<p>...</p>
<li>
<p>- some text</p>
</li>
<li>
<p>- some other text</p>
</li>
<!-- another li elements -->
<p>multiple other paragraphs</p>
<p>...</p>
<li>
<p>1. some text</p>
</li>
<li>
<p>2. some other text</p>
</li>
<!-- another li elements -->
<p>multiple other paragraphs</p>
<p>...</p>
<!-- there are other elements such as table, illustration, ul etc. -->
</chapter>
Я хочу обернуть каждый разбросанный (я имею в виду между абзацами,таблицы, иллюстрации и т. д.) последовательность из li
элементов с ol
или ul
элементами в зависимости от некоторых семантических и возвращаемых обернутых XML.
- если первый символ в абзацеравно
-
, то должно быть ul
с атрибутом mark="DASH"
- , если абзацы начинаются с
1.
, 2.
, 3.
и т. д., тогда я хочу ol
с numeration="ARABIC"
Например (это всего лишь одна последовательность):
<ul mark="DASH">
<li>
<p> some text</p>
</li>
<li>
<p> some other text</p>
</li>
<ul>
Как вы видите далее, мне нужно вырезать"пометить символ (ы)"из всех абзацев, то есть -
или 1.
, 2.
, 3.
и т. д.
Этот входной XML более сложный, чем я описал (вложенные последовательности, внутренние последовательности в элементах таблицы), ноЯ ищу какую-то идею, особенно как поймать и обработать определенную последовательность с такой семантикой.
Я хочу выводить XML с точно таким же порядком, только с обернутыми li
элементами.XSLT 2.0 / EXSLT доступны при необходимости.