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



在我的XSLT中,我想查找XML文件。我需要从java code通过此文件的路径。我有以下内容:

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

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>

问题在于我想将绝对的"基础"路径传递到XSL,我想将其与实际的XML文件名(myfile.xml)结合使用。在我看来,document考虑了相对于XSL的位置的文件参数。此外,我指出的是,该参数未从Java代码中拾取。我将JABX与默认的Xalan XSLT处理器(1.0)一起使用我尝试了许多基于其他帖子传递参数的变体,但没有成功。

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

相关内容

  • 没有找到相关文章

最新更新