使用xslt将xml拆分为多个html文件
我有一个非常大的xml文档,它看起来像下面的摘录。使用xslt将xml拆分为多个html文件,xml,xslt,Xml,Xslt,我有一个非常大的xml文档,它看起来像下面的摘录。 <html> <body>Header Two</body> </html> 我能够使用web上的一些示例将文件拆分为多个html文件 <html> <body>Header Two</body> </html> 我对结果文件的唯一问题是,它们应该包括标记和下一个之前的每个元素,然后使用以下元素获取下一个,依此类推
<html>
<body>Header Two</body>
</html>
我能够使用web上的一些示例将文件拆分为多个html文件
<html>
<body>Header Two</body>
</html>
我对结果文件的唯一问题是,它们应该包括
标记和下一个
之前的每个元素,然后使用以下元素获取下一个
,依此类推
<html>
<body>Header Two</body>
</html>
因此,基本上我需要的是能够为
以及以下元素生成一个文件(
,
,
)
<?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>
<html>
<body>Header Two</body>
</html>
当前创建文件时,下一个h1标记之前的以下元素不包括在创建的文档中。我不知道如何调整xslt来做到这一点。
原始xml
<?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 Two</body>
</html>
标题一
敏捷的棕色狐狸跳过了懒狗
<html>
<body>Header Two</body>
</html>
敏捷的棕色狐狸跳过了懒狗
<html>
<body>Header Two</body>
</html>
敏捷的棕色狐狸跳过了懒狗
<html>
<body>Header Two</body>
</html>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:for-each-group select="*" group-starting-with="h1">
<xsl:result-document href="output/{@id}.html">
<html>
<body>
<xsl:apply-templates select="current-group()"/>
</body>
</html>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="ol">
<ul>
<xsl:apply-templates select="@*|node()"/>
</ul>
</xsl:template>
</xsl:stylesheet>
清单1
清单2
标题二
敏捷的棕色狐狸跳过了懒狗
<html>
<body>Header Two</body>
</html>
敏捷的棕色狐狸跳过了懒狗
<html>
<body>Header Two</body>
</html>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:for-each-group select="*" group-starting-with="h1">
<xsl:result-document href="output/{@id}.html">
<html>
<body>
<xsl:apply-templates select="current-group()"/>
</body>
</html>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="ol">
<ul>
<xsl:apply-templates select="@*|node()"/>
</ul>
</xsl:template>
</xsl:stylesheet>
-
清单3
-
清单4
敏捷的棕色狐狸跳过了懒狗
<html>
<body>Header Two</body>
</html>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:for-each-group select="*" group-starting-with="h1">
<xsl:result-document href="output/{@id}.html">
<html>
<body>
<xsl:apply-templates select="current-group()"/>
</body>
</html>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="ol">
<ul>
<xsl:apply-templates select="@*|node()"/>
</ul>
</xsl:template>
</xsl:stylesheet>
头球三
我举一个例子
敏捷的棕色狐狸跳过了懒狗
<html>
<body>Header Two</body>
</html>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*">
<xsl:for-each-group select="*" group-starting-with="h1">
<xsl:result-document href="output/{@id}.html">
<html>
<body>
<xsl:apply-templates select="current-group()"/>
</body>
</html>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="ol">
<ul>
<xsl:apply-templates select="@*|node()"/>
</ul>
</xsl:template>
</xsl:stylesheet>
另一个例子
xslt遵循IBM开发者网站上的示例,位于此处:
<html>
<body>Header Two</body>
</html>
生成的文件如下所示:
<html>
<body>Header Two</body>
</html>
<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>
标题一
标题二
头球三
非常感谢。我想你在找这样的东西
<html>
<body>Header Two</body>
</html>
XML输入
<html>
<body>Header Two</body>
</html>
<html>
<body>
<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>
</body>
</html>
我想你在找这样的东西
<html>
<body>Header Two</body>
</html>
XML输入
<html>
<body>Header Two</body>
</html>
<html>
<body>
<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>
</body>
</html>
由于某些原因,我无法正确格式化邮件,请耐心等待。由于某些原因,我无法正确格式化邮件,请耐心等待。