XSL中的文档功能上的XML位置在Unix/Linux服务器中不起作用

use*_*579 0 xml xslt sas

我正在使用SAS PROC XSL通过合并来自多个XML的信息来创建新的XML.为此,我使用Document()函数和()中的XML文件的路径.当我在Windows上提交代码时,此代码工作正常,但在LINUX服务器上却没有.令我惊讶的是,日志中没有错误或警告消息.我正在使用XSL处理器1.0.

使用的xsl文件的内容

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="/">
<root>
    <xsl:comment>One Argument </xsl:comment>
    <xsl:for-each select="document('/project/dev/xml_test/b.xml')//a">
        <xsl:copy-of select="."/>
    </xsl:for-each>

    <xsl:comment>Two Argument </xsl:comment>
    <xsl:for-each select="document('/project/dev/xml_test/a.xml', .)//a">
        <xsl:copy-of select="."/>
    </xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

SAS代码:

filename infile "/project/dev/xml_test/b.xml" ;

filename style "/project/dev/xml_test/xslfile.xsl"; --the content is as given above

filename outfile   "/project/dev/xml_test/c.xml";



proc xsl in=infile xsl=style out=outfile;
run;
Run Code Online (Sandbox Code Playgroud)

kjh*_*hes 5

使用URI格式来指定document()函数的filename参数:

file:///path/to/document.xml
Run Code Online (Sandbox Code Playgroud)

或者,对于Windows,如果您需要驱动器指示符:

file:///x:/path/to/document.xml
Run Code Online (Sandbox Code Playgroud)

请注意,/连续有三个s.(通常会有两个/s后跟一个host后跟另一个/,但对于本地文件系统,主机被省略.)