base-uri没有返回源文档的uri

时间:2012-03-27 13:17:42

标签: xslt-2.0 saxon base-url

由于某种原因,当我运行XSLT(使用XSLT2,Saxon 9.4 PE)时,base-uri()没有返回源文件的uri。

这是我的xslt测试用例

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"
xmlns:err="http://www.w3.org/2005/xqt-errors"
exclude-result-prefixes="xs xdt err fn">

<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">

<xsl:value-of select="base-uri()"></xsl:value-of>
</xsl:template>

当我在源xml文件上运行它时,我得到

<?xml version="1.0" encoding="UTF-8"?>

请注意,我可以使用base-uri(document(''))检索样式表URI。

我也没有成功使用document-uri(/)。

更新:看起来肯定有些不对劲。似乎我没有做任何事情让处理器在SOURCE目录中查看。

当我尝试“document('Dummy.xml',.)时,它说它找不到”Dummy.xml“,即使这是源文件的名称。

也许我应该重新安装jar文件或发送电子邮件给EditiX支持。

1 个答案:

答案 0 :(得分:1)

如何从命令行或您自己的代码中使用Saxon?你如何向撒克逊提供输入文件? 当我从命令行运行Saxon 9.4 HE Java(例如java -jar saxon9.he input.xml sheet.xsl)时,我得到了一些有意义的输出(如<?xml version="1.0" encoding="UTF-8"?>file:/C:/Users/UserName/Documents/xslt/input.xml)。