我有以下一個非常大的xml文檔,它看起來像下面的摘錄。 我可以使用網上找到的一些例子將文件分割成多個html文件。將xml拆分爲多個html文件使用xslt
我與生成的文件唯一的問題是,他們應該包括<h1>
標籤和每一個元素的下一個<h1>
之前再獲得下<h1>
包含下列元素等等等等。
所以基本上我需要的是能夠產生一個文件<h1 id=h1>
包含下列元素在一起(<p>
,<ol>
,<pre>
)目前,當文件被創建下列元素 之前不包括在接下來的h1標籤創建的文件。我不知道如何調整xslt來做到這一點。 原始的XML
<?xml version="1.0" encoding="UTF-8"?>
<paragraphs>
<h1 id= "h1">Header One</h1>
<p>The quick brown fox jumps over the lazy dog. </p>
<p>The quick brown fox jumps over the lazy dog. </p>
<p>The quick brown fox jumps over the lazy dog.</p>
<ol>
<li>
List 1
</li>
<li>
List 2
</li>
</ol>
<h1 id= "h2">Header Two</h1>
<p>The quick brown fox jumps over the lazy dog. </p>
<p>The quick brown fox jumps over the lazy dog.</p>
<ul>
<li>
List 3
</li
>
<li>
List 4
</li>
</ul>
<p>The quick brown fox jumps over the lazy dog.</p>
<h1 id= "h3">Header Three</h1>
<pre>my example one</pre>
<p>The quick brown fox jumps over the lazy dog.</p>
<pre> Another example</pre>
</paragraphs>
的XSLT以下來自IBM開發者網站位於這裏的例子:http://www.ibm.com/developerworks/library/x-tipmultxsl/
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="text"/>
<xsl:output method="html" indent="yes" name="html"/>
<xsl:template match="/">
<xsl:for-each select="//h1">
<xsl:variable name="filename"
select="concat('output/',@id,'.html')" />
<xsl:value-of select="$filename" /> <!-- Creating -->
<xsl:result-document href="{$filename}" format="html">
<html><body>
<xsl:value-of select="text()"/>
</body></html>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
生成的文件如下所示:
<html>
<body>Header One</body>
</html>
<html>
<body>Header Two</body>
</html>
<html>
<body>Header Three</body>
</html>
非常感謝。
因爲某些原因,我不能正確格式化消息,請多多包涵。 – ManUO