我正在尝试从几个xml文件生成xml输出

时间:2016-01-20 21:19:51

标签: xml xslt

我有一个顶级“索引”文件,可能有也可能没有列出一系列附加文件的元素。所有文件都是xml格式,但扩展名为“.exlog”。第一个问题,xsl函数document()可以处理一个xml文件的uri,但是没有xml扩展名吗?我无法在网上找到相关文档。

我已经继续并重新保存文件以获得.xml扩展名以防万一,并且我已将文件保存到同一目录中。我的XSL文件有以下部分,对于文档函数的所有调用,一切都有效 - 除了那些总是不返回任何内容:

   <xsl:template match="tasktype">
   <xsl:if test="looptask">
    <Row>
        <Cell><Data ss:Type="String">
            <xsl:value-of select="looptask/@label"/>
        </Data></Cell>

        <Cell><Data ss:Type="String">
            <xsl:value-of select="looptask/taskinfo/definition"/>
        </Data></Cell>

    </Row>
    <xsl:for-each select="looptask/looplogs/looplog">
    <xsl:variable name="loopFile" select="document('source.xml')/results/iteration"/>
    <Row>
        <Cell><Data ss:Type="String">
        <xsl:value-of select="@path"/>
        </Data></Cell>
        <Cell><Data ss:Type="String">
        <xsl:value-of select="$loopFile"/>
        <xsl:value-of select="document('source.xml')/results/iteration"/>
        </Data></Cell>
    </Row>
    </xsl:for-each>
</xsl:if>
</xsl:template>

source.xml文件看起来像下面的代码,我在父xml文件上运行其余的xsl。

    <?xml version="1.0" encoding="utf-8"?>
<results>
<iteration value="F19">help!</iteration>
<tasktype>
    <task label="task1">
        <taskinfo>
            <definition>text</definition>
        </taskinfo>
    </task>
</tasktype>
<iteration_results status="Fail"/>

无论我做什么,我都无法获取文件功能来返回任何信息。我觉得我必须遗漏一些明显的东西。

FWIW,我正在使用notepad ++在master xml文档上运行转换文件。

提供了答案(谢谢!),这就是需要完整路径。

现在我有一个后续问题。我正在使用XSLT 1.0,我的源文件有几个这样的节点集:

    <tasktype> 
    <task label="task1"> 
    <taskinfo> <definition>text</definition> 
    </taskinfo> </task> </tasktype> 

我想选择每个定义并为每个定义打印文本......我该怎么做?我以为我可以使用copy-of为节点设置变量,但我无法弄清楚如何选择该变量中的节点。 XSLT 1.0是不可能的?

0 个答案:

没有答案