我正在使用 XSLT 参数在运行时使用 Xalan-C 在属性中设置绝对路径。基本上,我的输入 XML 是这样的:-
<root xmlns="initial">
<!-- document goes here -->
</root>
我的样式表是:-
<xsl:stylesheet version="1.0" xmlns:s="initial" xmlns="final" />
<xsl:param name="default_data_location">/path/to/some/location</xsl:param>
<xsl:template match="//s:*">
<xsl:element name="{local-name()}" namespace="final">
<xsl:attribute name="dataLocation">
<xsl:value-of select="concat($default_data_location, '/datafile')"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
<!-- rest of the stylesheet -->
</xsl:stylesheet>
因此,当我运行它时,我想要的输出 XML 为:-
Xalan foo.xml foo.xsl
应该是(这是有效的部分):-
<root xmlns="final" dataLocation="/path/to/some/location/datafile">
<!-- document goes here -->
</root>
当我运行它时: -
Xalan -p default_data_location /some/other/path foo.xml foo.xsl
它应该是(这是不起作用的部分):-
<root xmlns="final" dataLocation="/some/other/path/datafile">
<!-- document goes here -->
</root>
但是,如果我尝试在命令行中设置此参数,它会给我以下 XML:-
<root xmlns="final" dataLocation="/datafile">
<!-- document goes here -->
</root>
我应该做什么?