1
我有一個XML的以下部分(這是ODF)我怎樣才能在平坦的XML組的兄弟姐妹
<office:body>
<office:text text:use-soft-page-breaks="true">
<text:h text:style-name="P1" text:outline-level="1">Heading 1</text:h>
<text:p text:style-name="P2">Paragraph 1</text:p>
<text:h text:style-name="P3" text:outline-level="2">Heading 2</text:h>
<text:p text:style-name="P4">Paragraph 2</text:p>
<text:p text:style-name="P5">Paragraph 3</text:p>
<text:h text:style-name="P6" text:outline-level="3">Heading 3</text:h>
<text:p text:style-name="P7">Paragraph 4</text:p>
<text:p text:style-name="P8">Paragraph 5</text:p>
<text:p text:style-name="P9">Paragraph 6</text:p>
<text:h text:style-name="P10" text:outline-level="4">Heading 4</text:h>
<text:p text:style-name="P11">Paragraph 7</text:p>
<text:h text:style-name="P12" text:outline-level="2">Heading 2</text:h>
<text:p text:style-name="P13">Paragraph 8</text:p>
<text:p text:style-name="P14">Paragraph 9</text:p>
<text:p text:style-name="Normal">
<text:span text:style-name="T15">Paragraph 10</text:span>
</text:p>
</office:text>
</office:body>
我需要將此轉化爲
<Blocks>
<Block>
<Title><![CDATA[Heading 2]]></Title>
<Content>
<![CDATA[<p>Paragraph 2</p><p>Paragraph 3</p><h3>Heading 3</h3><p>Paragraph 4</p><p>Paragraph 5</p><p>Paragraph 6</p><h4>Heading 4</h4><p>Paragraph 7</p>]]>
</Content>
</Block>
<Block>
<Title><![CDATA[Heading 2]]></Title>
<Content>
<![CDATA[<p>Paragraph 8</p><p>Paragraph 9</p><p>Paragraph 10</p>]]>
</Content>
</Block>
</Blocks>
正如你所看到的,我想要爲每個text:h/@text:outline-level = 2
節點創建一個Block
元素。
以下所有內容text:p
和text:h/@text:outline-level > 2
兄弟姐妹應放置在剛創建的Block
元素內的Content
元素中。
我該如何做到這一點?
就是這樣!我的主要問題是xsl:key,你完全爲我解決了它。最後一個'p'是我的錯,我在我的問題中澄清了它。 CDATA中的'p','h3'和'h4'是另一個問題:但經過幾次嘗試後,它終於與這個模板一起工作: <p> </p > xsl:template> –
Sandro
2012-07-10 08:57:21