Выровнять структуру XML, извлекая элементы и разделяя остальное на отдельные элементы с помощью XSLT - PullRequest
0 голосов
/ 20 марта 2020

У меня есть структура 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 , который идет в том же направлении, хотя и предназначен для разделения плоской структуры на группы. Мой вариант использования, однако, заключается в том, чтобы «извлечь» элемент и создать несколько отдельных элементов из остальных, и тем самым сгладить структуру.

Как этого достичь?

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