Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file Saxon:result-document()函数失败,没有错误消息_Batch File_Xslt_Saxon - Fatal编程技术网

Batch file Saxon:result-document()函数失败,没有错误消息

Batch file Saxon:result-document()函数失败,没有错误消息,batch-file,xslt,saxon,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调用输出2个文本文件的XSLT: <xsl:template match="manual">

我正在从批处理文件调用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调用输出2个文本文件的XSLT:

 <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>
没有写操作失败或失败原因的指示

更糟糕的是,当我直接从命令行窗口运行Transform命令时,它成功了


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

很棘手。您不太可能从Saxon获得更多信息,因为Saxon可能不知道这些文件尚未成功编写。通常情况下,像这样的问题,文件实际上是存在的,但它们并不是您所期望的

一个建议:尝试使用-T选项运行。生成的跟踪应该告诉您转换是运行到(显然成功)完成,还是在某个阶段过早中断

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


我已经忘记了我曾经知道的关于Windows文件系统的大部分内容,但是有没有可能在出现故障的帐户下,驱动器号Z被映射到意外的地方?

因此XSLT尝试创建两个文本文件,而日志(由
-t
选项生成的输出,如“Writing to…”只会显示“写入文件:/Z:/version.txt”而不是“写入文件:/Z:/state.txt”?并且这两个文件都没有创建?是否有任何安全设置阻止“写入文件不同”“从写入设备上文件的帐户
Z:
?日志中有两个文件的条目。用户具有Z的写入权限:驱动器号可能是问题所在;我将对此进行研究。我发现了一个不匹配:批处理文件是从UNC路径调用的,而XSLT转换尝试写入驱动器号Z:当我用驱动器号替换UNC路径时,文件被正确写入。我将做更多的测试,看看是否可以让它与UNC路径一起工作。UNC路径到URI的映射是出了名的易变(它定义得很糟糕,我认为Java不会总是给出与.NET相同的结果)。请记住,XSLT处理URI。
Writing to file:/Z:/version.txt