saxon 将目录作为命令行参数传递给 XSLT 2.0 样式 sheet
saxon passing directory as a command line parameter to XSLT 2.0 style sheet
使用 Saxon9he,我想将输入文件的目录传递给我的 XSLT 样式 sheet。我已经在我的样式中定义了参数 sheet:
<xsl:param name="publishing.folder" />
并在命令行上:
+publishing.folder="%~dp1\"
与+
参数为空。
没有 +
,
publishing.folder="%~dp1\"
我得到:Error in xsl:result-document/@href Resolved URL is malformed: unknown protocol: d
d
可能是盘符,这是输入文件所在的位置。
这是导致错误的 @href
的代码:
<xsl:template match="/">
<xsl:call-template name="write-dataset-file">
<xsl:with-param name="filename" select="concat($publishing.folder,'-dataset.xml')"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="write-dataset-file">
<xsl:param name="filename"/>
<xsl:result-document href="{$filename}" omit-xml-declaration="false" method="xml" indent="yes">
<Dataset>
</Dataset>
</xsl:result-document>
</xsl:template>
xalan 接受命令行参数 -PARAM publishing.folder "%~dp1\"
,但我不想回到 XSLT 1.0
xsl:result-document 的 href 属性必须是一个 URI,但你正在构造一个文件名。尽管许多 XML 相关的软件包接受标准需要 URI 的文件名,但 Saxon 往往更严格。解决此问题的最简单方法是在文件名的开头添加 "file:///",但如果文件名包含特殊字符(例如“#”),这可能不够。
使用 Saxon9he,我想将输入文件的目录传递给我的 XSLT 样式 sheet。我已经在我的样式中定义了参数 sheet:
<xsl:param name="publishing.folder" />
并在命令行上:
+publishing.folder="%~dp1\"
与+
参数为空。
没有 +
,
publishing.folder="%~dp1\"
我得到:Error in xsl:result-document/@href Resolved URL is malformed: unknown protocol: d
d
可能是盘符,这是输入文件所在的位置。
这是导致错误的 @href
的代码:
<xsl:template match="/">
<xsl:call-template name="write-dataset-file">
<xsl:with-param name="filename" select="concat($publishing.folder,'-dataset.xml')"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="write-dataset-file">
<xsl:param name="filename"/>
<xsl:result-document href="{$filename}" omit-xml-declaration="false" method="xml" indent="yes">
<Dataset>
</Dataset>
</xsl:result-document>
</xsl:template>
xalan 接受命令行参数 -PARAM publishing.folder "%~dp1\"
,但我不想回到 XSLT 1.0
xsl:result-document 的 href 属性必须是一个 URI,但你正在构造一个文件名。尽管许多 XML 相关的软件包接受标准需要 URI 的文件名,但 Saxon 往往更严格。解决此问题的最简单方法是在文件名的开头添加 "file:///",但如果文件名包含特殊字符(例如“#”),这可能不够。