微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将相同的生成文件输出到多个输出位置

如何解决将相同的生成文件输出到多个输出位置

我正在使用 XSLT(从终端触发)在它们自己的文件夹结构(例如“doc-1-folder”、“doc-2-folder”)中构建 2 个单独的 XHTML 文档。每次构建时,我都希望有一个“本地”输出,但我还添加一个共享存储文件夹,我希望输出也能到达。

XSLT 的每个触发器应该因此产生相同的输出文件两次, 一个到其本地文件夹,一个到共享文件夹。

想要复制文档构建的原因是我将合并一些文档并希望执行调用存储文件夹的合并。

一个简短的说明:

制作 doc-1:

/doc-1-folder/myDoc-1.xhtml
/shared/storage/myDoc-1.xhtml

制作 doc-2:

/doc-2-folder/myDoc-2.xhtml
/shared/storage/myDoc-2.xhtml

在存储中会产生:

/shared/storage/myDoc-1.xhtml
/shared/storage/myDoc-2.xhtml

在这里阅读: https://www.saxonica.com/documentation10/index.html#!using-xsl/commandline, 看起来只能定义一个带有“-o”标志的输出文件

是否可以定义多个输出文件?或者我是否必须创建几个 XSLT 脚本来处理(相同的)输出两次?

解决方法

如果你想在 XSLT 中完成这一切,你可以使用逻辑

<xsl:variable name="outputDoc">
  ... generate the output ...
</xsl:variable>
<xsl:result-document href="firstOutput.xml">
  <xsl:copy-of select="$outputDoc"/>
</xsl:result-document>
<xsl:result-document href="secondOutput.xml">
  <xsl:copy-of select="$outputDoc"/>
</xsl:result-document>

如果您使用的是用于 Saxon (s9api) 的 Java API,您可以通过编写一个 ResultDocumentHandler 将输出定向到一个 net.sf.saxon.s9api.TeeDestination 来更冒险和更高效飞到两个不同的地方。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。