我是 XSLT 的新手,所以我寻求帮助。我有许多 XML 文档,以下是其中的一个代表性示例。文档被划分为<sub-doc(n)>
元素,元素进一步被划分为<section>
元素。在这些部分中有零个或多个<heading>
元素,以及一个或多个<paragraph>
元素。我的目标是确保每个部分最多有一个<heading>
元素,方法是将那些确实有多个标题的部分分成多个部分,每个部分都有一个标题。完成后,<paragraph>
紧跟在 a 之后的元素必须与new<heading>
一起进入。例如,请注意,在以下示例中,第一个有两个元素。我需要打破这个<heading>
<section>
<section>
<sub-doc1>
<heading>
<section>
元素分为两个<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。感谢你的协助。