Saxon vs. XMLSpy,根模板

时间:2014-06-01 11:23:05

标签: xml xslt saxon

我有一个样式表,我需要通过XMLSpy和Saxon使用。它不使用输入文件。相反,它自己生成整个输出。 Saxon让我可以选择在没有源文件的情况下执行工作表:-it:root,例如。 然后我需要一个名为“root”的命名模板:

<xsl:template name="root">
    ....
</xsl:template>

但是XMLSpy需要一个

<xsl:template match "/">
    my stuff
</xsl:template>

我不能让XMLSpy从“root”开始。 (好吧,我不知道怎么......)

所以我想,我会这样做:

<xsl:template name="root">
    <xsl:apply-template select="/"/>
</xsl:template>
<xsl:template match "/">
    my stuff
</xsl:template>

让每个人都开心。但只有XMLSpy很高兴。 从Perl,我做:

java.exe -jar E:\\Saxon\\saxon9he.jar -it:root -o:package.opf -xsl:package.xslt

撒克逊说: XPDY0002:查找树的根:没有上下文项。

那么:我该怎么办?

2 个答案:

答案 0 :(得分:1)

我很确定,对于XSLT 2.0,应该可以使用XMLSpy从命名模板开始,但我不能告诉你如何做到这一点,请在altova.com网站上的用户表单中询问。 Altova的AltovaXML的命令行界面只使用/n root作为命令行选项。至于尝试运行XSLT而不需要从命名模板开始,我会按照您使用XSLT 1.0的方式执行此操作,即提供虚拟XML输入,然后执行<xsl:template match="/"><xsl:call-template name="root"/></xsl:template>

答案 1 :(得分:1)

为什么不做呢

<xsl:template match="/" name="root">
  stuff
</xsl:template>

然后,您可以通过在apply-templates模式下提供虚拟文档,或者从命名模板“root”开始来调用代码。