我有一个输出到html的XSL文档。我想运行批处理,使用filelist.xml对多个XML输入文档执行此转换,并使用相应的html输出文件,如下所示:
<?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" indent="no"/>
<xsl:output method="html" indent="yes" name="html"/>
<xsl:template match="/">
<xsl:for-each select="//*:file">
<xsl:variable select="document(@url)" name="contents" />
<xsl:variable select="replace(@url,'[.]xml','.html')" name="newfile" />
Creating <xsl:value-of select="$newfile" />
<xsl:result-document href="{$newfile}" format="html">
<html><body>
Test run: <xsl:value-of select="$contents/testrun/@run" />
</body></html>
</xsl:result-document>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
如何将模板应用于每个文件,就像处理单个文件一样?即:
<xsl:template match="guidance">
“guide”是我的源XML的根节点。这是不正确的,因为我必须嵌套模板。这个问题的正确方法是什么?
感谢。
答案 0 :(得分:0)
“guide”是我的源XML的根节点。这是不正确的,因为我必须嵌套模板。这个问题的正确方法是什么?
使用xsl定义模板规则没有任何问题:template match =“guidance”。它必须遵循通常的XSLT原则,即所有模板规则都出现在最外层(全局)级别。要调用模板,请执行类似xsl的操作:apply-templates select =“document(@href)/ guidance”。
如果您想使模块更加模块化,您可以(a)将一个文档类型的所有模板规则放在一个样式表模块中,和/或(b)为每种文档类型使用不同的模板规则模式。 / p>
答案 1 :(得分:0)
然后,我如何将模板应用于每个模板 这些文件,就像我一样 处理一个文件?
使用强>:
<xsl:apply-templates select="$contents" mode="fileLevel"/>
并在mode="filelevel"
中提供任何必要的模板来处理单个文件。