Я использую параметры 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>
Что я должен делать?