У меня есть структура XML, подобная следующей, которая похожа на HTML:
<paragraph>
text
<unordered-list>
<list-item>list item</list-item>
</unordered-list>
more text <link url="https://stackoverflow.com">link text</link>
</paragraph>
Я хочу преобразовать ее в HTML с помощью XSLT. Проблема в том, что HTML не допускает элементы списка (<ol>
/ <ul>
) внутри абзацев (<p>
) . Поэтому мне нужно разбить все, что находится вне списков, в абзац. Т.е. структура, которую я хочу создать, должна выглядеть следующим образом:
<p>
text
</p>
<ul>
<li>list item</li>
</ul>
<p>
more text <a href="https://stackoverflow.com">link text</a>
</p>
Моей первой идеей было l oop по всем узлам через <xsl:for-each select="./node()">
и поместить списки в <ol>
/ <ul>
и остальное в <p>
, хотя это, очевидно, не работает, потому что оно оборачивает каждый узел отдельно. В поисках ответов я увидел XSLT Grouping Siblings , который идет в том же направлении, хотя и предназначен для разделения плоской структуры на группы. Мой вариант использования, однако, заключается в том, чтобы «извлечь» элемент и создать несколько отдельных элементов из остальных, и тем самым сгладить структуру.
Как этого достичь?