当前位置: 首页 > 知识库问答 >
问题:

如何在xslTransformer.transform()方法中提供一个空的Source?

施越彬
2023-03-14

我有一个xslt 2.0文件,用于将csv文件转换为xml文件。xsl是从这里获取的:http://P2P . wrox . com/XSLT/40898-transform-CSV-file-XML . html # post 164344

现在我正在尝试通过Java变压器(使用Saxon9 xsl变压器工厂)执行此操作。由于csv文件作为参数传递到xsl中,因此我不需要在转换方法中的Source参数中传递任何内容。由于转换方法的javadocs声明如下:Transformer.transform方法的javadocs明确声明如下:

“空源表示为由 DocumentBuilder.newDocument() 构造的空文档。转换空源的结果取决于转换行为;它并不总是一个空洞的结果。我尝试创建一个空文档并尝试如下所示的转换:

TransformerFactory transformerFactory =  TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null);
    Source xsltSource = new StreamSource("file:///C:/my.xsl");
    Transformer xsltTransformer = transformerFactory.newTransformer(xsltSource);
xsltTransformer.setParameter("pathToCSV", "'file:///C:/input.csv'");
StringWriter writer = new StringWriter();
xsltTransformer.transform(new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()), new StreamResult(writer));

上面的代码没有输出任何东西,也没有按预期工作,因为我认为考虑了作为输入给出的空文档,而不是xsl中以下行中传递的csv文件:

<xsl:param name="pathToCSV"  />
<xsl:variable name="input" select="unparsed-text($pathToCSV)"/>

谁能给我一些关于如何完成我想要实现的目标的指示?

共有1个答案

秦英发
2023-03-14

如果您想使用XSLT 2.0的特性,例如从您链接到的XSLT所需的命名模板开始,请考虑使用Saxon APIhttp://saxonica.com/documentation/html/using-xsl/embedding/s9api-transformation.html而不是使用JAXP API。或者,如果您想在空虚拟文档中使用JAXP,您至少需要添加一个模板

<xsl:template match="/">
  <xsl:call-template name="main"/>
</xsl:template>
 类似资料:
  • 在hibernate中,我在Dao层中使用了和方法按照我的预期工作,但总是返回空结果集,我仍然无法找出原因,任何人都可以帮助我解决这个问题, 注意:没有异常,只返回空列表 这是我的代码 查找全部方法 通过id方法查找 getSession方法 提前谢谢大家干杯

  • 我想用 使用请求构造函数参数的异常类型。类似这样的事情: 有没有一种方法可以创建一个供应商来传递我的参数值?

  • 没有空白的GUI显示为“拥挤”。我如何提供空白而不需要明确地设置元件的位置或尺寸?………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

  • 问题内容: 我想要两个相同模型的外键: 我收到如下错误: 字段“ example1”的访问器与相关字段“ Example.test_set”冲突。在“ example1”的定义中添加一个related_name参数。 问题答案: 尝试使用:

  • 问题内容: 所以我基本上想做的很简单 由于某种原因,它无法正常工作。在我的Javascript控制台(Chrome浏览器)中 编辑1:我已经添加了实际的代码,如您所见,我在构造函数中绑定了validateEmail 问题答案: 您的方法已正确定义,因此问题出在如何 调用上 。 您以一种设置为实例以外的方式调用它。这在事件侦听器中很常见。我想您的代码中有一些类似的代码: React 的推荐解决方案是