我有一个顶级“索引”文件,可能有也可能没有列出一系列附加文件的元素。所有文件都是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是不可能的?