У меня есть следующий очень большой 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