我是XSLT的新手,所以我尋求幫助。我有許多XML文檔,其中以下是一個具有代表性的示例。這些文件分爲<sub-doc(n)>
元素,其中又分爲<section>
元素。在部分內是零或更多<heading>
元素,以及一個或多個<paragraph>
元素。我的目標是確保每個部分至多具有一個<heading>
元素,方法是將具有多個標題的那些部分分成多個部分,每個部分各有一個標題。完成後,緊接在<heading>
之後的<paragraph>
元素必須與<heading>
一起加入新的<section>
。例如,請注意,在以下示例中,第一個<section>
的<sub-doc1>
有兩個<heading>
元素。我需要將此元素分解爲兩個元素,每個元素都有其自己的<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