这是一个跟在"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