撒克逊人:result-document()函数失败,没有错误消息

时间:2019-01-31 15:03:40

标签: batch-file xslt saxon

我正在从批处理文件中呼叫Saxon(9.6 HE):

Transform -t -s:"in.xml" -xsl:"ChangeFileName.xsl" -o:"changefilename.txt" 1>>convert.log 2>&1

命令1>>convert.log 2>&1将Saxon的标准错误输出发送到文件convert.log

Transform调用一个XSLT,它输出2个文本文件:

 <xsl:template match="manual">
         <xsl:result-document method="text" href="version.txt">
                 <xsl:text> </xsl:text><xsl:value-of select="/manual/bookVariables/Variable[@Name='USR_Manual_Version']/@Value"/><xsl:text> </xsl:text>
         </xsl:result-document>  
         <xsl:result-document method="text" href="state.txt">
              <xsl:text> </xsl:text><xsl:value-of select="/manual/bookVariables/Variable[@Name='USR_Manual_State']/@Value"/>
         </xsl:result-document>
 </xsl:template>

当我从自己的用户帐户运行转换时,此方法有效,但是当我使用其他帐户时,此操作失败:未创建文本文件state.txtversion.txt

我正在尝试解决此问题,但Saxon不会输出任何错误消息。我的日志文件仅包含

Writing to file:/Z:/version.txt

,不表示写入失败或失败原因。

更糟糕的是,当我直接从命令行窗口运行“转换”命令时,它会成功。

如何从Saxon中获取更详细的错误信息?

1 个答案:

答案 0 :(得分:1)

整rick。您不太可能从Saxon中获得更多信息,因为Saxon可能不知道文件未成功写入。通常会遇到类似这样的问题,这些文件实际上存在,但是它们不在您期望的位置。

一个建议:尝试使用-T选项运行。跟踪结果将告诉您转换是否已完成(显然成功),或者是否在某个阶段过早终止。

另一个建议:尝试在href属性中使用绝对URI(例如file:///x/y/z.txt)。

我已经忘记了我以前对Windows文件系统的大部分知识,但是在失败的帐户下,驱动器号Z是否有可能映射到意外的地方?