次の抜粋のような非常に大きな xml ドキュメントがあります。Web で見つかったいくつかの例を使用して、ファイルを複数の html ファイルに分割できます。
結果のファイルに関する私の唯一の問題は<h1>
、次の前にタグとすべての要素を含めてから、次の要素などで<h1>
次を取得する必要がある<h1>
ことです。
したがって、基本的に必要なのは、次の要素 ( 、、 )<h1 id=h1>
と一緒にファイルを生成できるようにすることです。現在、ファイルを作成するときに、次の h1 タグの前にある次の要素は、作成されたドキュメントに含まれていません。そして、それを行うためにxsltを調整する方法がわかりません。元のxml<p>
<ol>
<pre>
<?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>
次の IBM 開発者 Web サイトの例に続く xslt: 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>
どうもありがとう。