将绝对文件路径从java代码传递到xslt文档()

将绝对文件路径从java代码传递到xslt文档(),java,xml,xslt,jaxb,xslt-1.0,Java,Xml,Xslt,Jaxb,Xslt 1.0,在我的xslt中,我想查找一个xml文件。我需要从java代码传递此文件的路径。我有以下内容: ... Transformer transformer = TRANSFORMER_FACTORY.newTransformer(); transformer.setParameter("mypath", "/home/user/repository"); xslt: ... ... 问题是,我想向xsl传递一个绝对的“基本”路径,我想将它与实际的xml文件名(myfile.xml)结合起来。在

在我的xslt中,我想查找一个xml文件。我需要从java代码传递此文件的路径。我有以下内容:

...
Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
transformer.setParameter("mypath", "/home/user/repository");
xslt:


...
...
问题是,我想向xsl传递一个绝对的“基本”路径,我想将它与实际的xml文件名(myfile.xml)结合起来。在我看来,
文档
考虑了与xsl位置相关的文件参数。 此外,我注意到该参数不是从java代码中提取的。我将JABX与默认的Xalan XSLT处理器(1.0)一起使用
我尝试了许多基于其他SO帖子传递参数的变体,但没有成功。

您需要构造一个字符串,然后使用完整的文件URL:
文档(concat('file://',$mypath,/myfile.xml')

您尝试过实现
解析器吗?应该可以通过编程方式提供
myfile.xml
的内容。但问题是,我想让名称“myfile.xml”特定于xsl,而不想创建myfile.xml的文档对象并将其传递给xslt。
<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" indent="yes"/>

  <xsl:param name="mypath"/>

  ...
  <xsl:template match="connection[@id]">
    <xsl:variable name="lookupStore" select="document('$mypath/myfile.xml')/connections"/>
    <xsl:copy>
      <xsl:apply-templates select="$lookupStore">
        <xsl:with-param name="current" select="."/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>

  ...
<xsl:transform>