這是一個跟在"Select all of an element between the current element and the next of the current element"之間的問題。即使如果我不確定創建一個新問題是否正確,我仍然會這樣做。因爲原來的問題已經回答,但後來改變了。所以我認爲改變的問題是開放的。此外,我認爲如果這個問題適合答案,應該把這個改變後的問題放回到統計數據中。創建一個分層xml表單「flat」xml,類似於圖書的說明
問題是如何創建一個像書籍描述一樣的「flat」xml的分層xml格式。
輸入XML是一樣的東西
<root>
<heading_1>Section 1</heading_1>
<para>...</para>
<list_1>...</list_1>
<heading_2>Section 1.1</heading_2>
<para>...</para>
<heading_3>Section 1.1.1</heading_3>
<para>...</para>
<list_1>...</list_1>
<heading_2>Section 1.2</heading_2>
<para>...</para>
<footnote>...</footnote>
<heading_1>Section 2</heading_1>
<para>...</para>
<list_1>...</list_1>
<heading_2>Section 2.1</heading_2>
<para>...</para>
<list_1>...</list_1>
<list_2>...</list_2>
<heading_3>Seciton 2.1.1</heading_3>
<para>...</para>
<heading_2>Section 2.2</heading_2>
<para>...</para>
<footnote>...</footnote>
</root>
每個<heading_*>
應該被解釋爲一個<section>
預期輸出XML是開始。
<section>
<title>Section 1</title>
<para>...</para>
<list_1>...</list_1>
<section>
<title>Section 1.1</title>
<para>...</para>
<section>
<title>Section 1.1.1</title>
<para>...</para>
<list_1>...</list_1>
</section>
</section>
<section>
<title>Section 1.2</title>
<para>...</para>
<footnote>...</footnote>
</section>
</section>
<section>
<title>Section 2</title>
<para>...</para>
<list_1>...</list_1>
<section>
<title>Section 2.1</title>
<para>...</para>
<list_1>...</list_1>
<list_2>...</list_2>
<section>
<title>Section 2.1.1</title>
<para>...</para>
</section>
</section>
<section>
<title>Section 2.2</title>
<para>...</para>
<footnote>...</footnote>
</section>
</section>
我也試過一段時間才能找到從@JLRishe原來的解決方案這基礎的解決方案。所以我找到了一個並且喜歡把它作爲一個可能的答案放在這裏。我希望能有一個更易理解的解決方案。
我不得不意識到,這個很好的解決方案並不適用於所有的xlst處理器(例如, xsltproc),因爲xls:key中的current()存在問題 – 2013-05-08 15:58:02