Я новичок в XSLT, поэтому я прошу помощи. У меня есть несколько XML-документов, из которых приведен пример. Документы делятся на элементы <sub-doc(n)>
, которые далее делятся на элементы <section>
. В пределах секций находятся ZERO или более <heading>
элементов, а также ONE или более <paragraph>
элементов. Моя цель - обеспечить, чтобы каждый раздел имел самое большее ОДИН <heading>
элемент, разделив те разделы, которые имеют более одного заголовка, в несколько разделов с одним заголовком в каждом. Когда это будет сделано, элементы <paragraph>
, следующие сразу после <heading>
, должны перейти с <heading>
в новый <section>
. Например, обратите внимание, что в следующем примере первый <section>
<sub-doc1>
имеет два элемента <heading>
. Мне нужно сломать этот элемент <section>
в TWO <section>
элементов, каждый со своим <heading>
и последующие <paragraph>
элементов.Как разбить дочерний узел на несколько дочерних узлов дочернего узла, каждый с одним поднаем
<document>
<sub-doc1>
<section> <!-- This section needs to be split -->
<heading>Subdoc1 first heading text</heading>
<paragraph>A lot of text</paragraph>
<paragraph>Yet more text</paragraph>
<paragraph>More text</paragraph>
...
<heading>Subdoc1 second heading text</heading>
<paragraph>Even more text</paragraph>
<paragraph>Some text</paragraph>
...
</section>
<section>
<paragraph>Even more text</paragraph>
...
</section>
</sub-doc1>
<sub-doc2>
<section>
<heading>Subdoc2, first heading text</heading>
<paragraph>A lot of text here</paragraph>
<paragraph>Yet more text here</paragraph>
<paragraph>Yet more text here</paragraph>
...
</section>
</sub-doc2>
</document>
То есть, преобразованный документ должен выглядеть следующим образом:
<document>
<sub-doc1>
<section> <!-- This section got split into two sections -->
<heading>Subdoc1 first heading text</heading>
<paragraph>A lot of text</paragraph>
<paragraph>Yet more text</paragraph>
<paragraph>More text</paragraph>
...
</section>
<section> <!-- This is a new section -->
<heading>Subdoc1 second heading text</heading>
<paragraph>Even more text</paragraph>
<paragraph>Some text</paragraph>
...
</section>
<section>
<paragraph>Even more text</paragraph>
...
</section>
</sub-doc1>
<sub-doc2>
<section>
<heading>Subdoc2, first heading text</heading>
<paragraph>A lot of text here</paragraph>
<paragraph>Yet more text here</paragraph>
<paragraph>Yet more text here</paragraph>
...
</section>
</sub-doc2>
</document>
Обратите внимание, что некоторые разделы не на всех <heading>
элементов. В этих случаях эти разделы должны оставаться неизменными. Кроме того, некоторые разделы имеют только один <heading>
. Эти разделы также должны оставаться неизменными. И все остальное в документе должно оставаться неизменным. Единственное преобразование, которое должно произойти, - это те случаи, когда <section>
в любом месте документа содержит более одного <heading>
.
Опять же, я новичок в XSLT и не могу получить голову вокруг XSL, который выполнит задачу. Спасибо за вашу помощь.
Спасибо, Бородин ...! Это работает отлично! Я очень ценю это. – user2399942