2011-02-01 13 views
3

私は、ページ番号が示されたXML文書を持っています。この1つのファイルを複数の出力ファイルに変換したいと思います。それは私が次のように変換したいと思い、次のとおりです。XSLTを使用してXMLを複数のページに分割できますか?

<root> 
    <page> 
    Page 1 contents 
    </page> 
    <page> 
    Page 2 contents 
    </page> 
</root> 

にpage1.html

<html> 
    <head></head> 
    <body> 
    Page 1 contents 
    </body> 
</html> 

page2.html

<html> 
    <head></head> 
    <body> 
    Page 2 contents 
    </body> 
</html> 

答えて

4

XSLTを使用してXMLを複数の ページに分割することは可能ですか? XSLT 2.0で

- はい<xsl:result-document>要素を使用します。EXSLT拡張要素を使用することができXSLT 1.0 1で

Saxon 9.1.0.5J from Saxonica 
Java version 1.6.0_23 
Stylesheet compilation time: 549 milliseconds 
Processing file:/C:/Program%20Files/Java/jre6/bin/marrowtr.xml 
Building tree for file:/C:/Program%20Files/Java/jre6/bin/marrowtr.xml using class net.sf.saxon.tinytree.TinyBuilder 
Tree built in 4 milliseconds 
Tree size: 7 nodes, 30 characters, 0 attributes 
Loading net.sf.saxon.event.MessageEmitter 
Writing to file:/C:/Program%20Files/Java/jre6/bin/page1.html 
Writing to file:/C:/Program%20Files/Java/jre6/bin/page2.html 
Execution time: 86 milliseconds 
Memory used: 11480728 
NamePool contents: 23 entries in 22 chains. 6 prefixes, 7 URIs 

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:template match="page"> 
    <xsl:result-document href="page{position()}.html"> 
    <html> 
     <head></head> 
     <body><xsl:value-of select="."/></body> 
    </html> 
    </xsl:result-document> 
</xsl:template> 
</xsl:stylesheet> 

結果<exslt:document>

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ext="http://exslt.org/common"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="page"> 
    <ext:document href="page{position()}.html"> 
    <html> 
     <head></head> 
     <body><xsl:value-of select="."/></body> 
    </html> 
    </ext:document> 
</xsl:template> 
</xsl:stylesheet> 
関連する問題