编程语言
首页 > 编程语言> > 将绝对文件路径从Java代码传递到xslt document()

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

作者:互联网

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

...
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)结合使用.在我看来,该文档考虑的是相对于xsl位置的文件参数.
此外,我指出该参数不是从Java代码中选取的.我将JABX与默认的Xalan XSLT处理器(1.0)一起使用
我尝试了基于其他SO帖子传递参数的许多变体,但没有成功.

解决方法:

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

标签:xslt-1-0,java,xml,jaxb,xslt
来源: https://codeday.me/bug/20191012/1896724.html