2012-04-11 76 views
4

我想將XML文件解析爲更小的XML文件並將它們放入文件夾中。這些文件夾是基於XML中的一些元素生成的。XSLT生成文件夾

如何在XSLT中生成文件夾?我能夠使用xsl:result-document生成文件,但到目前爲止我沒有找到如何生成文件夾的運氣。

+1

您是否嘗試過在結果文檔中指定路徑,即?我不確定那是否會起作用,但我仍然可以問。 – Sorrow 2012-04-11 07:00:52

+0

@明天+1不知道這是可能的 – 2012-04-11 09:21:26

+0

您可以指定是否使用XSLT 1.0或2.0 - 如果您使用舊版本的XSLT,可能無法幫助 – 2012-04-11 11:07:05

回答

4

您不需要專門創建文件夾,只需提供完整的所需路徑,如folder1/doc1.xmlFor example


<?xml version="1.0" encoding="UTF-8"?> 
<tests> 
    <testrun run="test1"> 
     <test name="foo" pass="true" /> 
     <test name="bar" pass="true" /> 
     <test name="baz" pass="true" /> 
    </testrun> 
    <testrun run="test2"> 
     <test name="foo" pass="true" /> 
     <test name="bar" pass="false" /> 
     <test name="baz" pass="false" /> 
    </testrun> 
    <testrun run="test3"> 
     <test name="foo" pass="false" /> 
     <test name="bar" pass="true" /> 
     <test name="baz" pass="false" /> 
    </testrun> 
</tests> 

<?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="//testrun"> 
<xsl:variable name="filename" 
    select="concat('output1/',@run,'.html')" /> 
<xsl:value-of select="$filename" /> <!-- Creating --> 
<xsl:result-document href="{$filename}" format="html"> 
    <html><body> 
     <xsl:value-of select="@run"/> 
    </body></html> 
</xsl:result-document> 
</xsl:for-each> 
</xsl:template> 
</xsl:stylesheet> 
3

它可能實現相關的,但是如果你使用撒克遜那麼,如果他們不存在<xsl:result-document href="foo/bar/baz/sample.xml"/>將創建的文件夾。