将相同的生成文件输出到多个输出位置
Output same produced file to several output locations
我正在使用 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>
如果您使用 Java API for Saxon (s9api),您可以通过编写一个 ResultDocumentHandler
来指导输出,从而更大胆、更高效到一个 net.sf.saxon.s9api.TeeDestination
将它指向两个不同的地方。
我正在使用 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>
如果您使用 Java API for Saxon (s9api),您可以通过编写一个 ResultDocumentHandler
来指导输出,从而更大胆、更高效到一个 net.sf.saxon.s9api.TeeDestination
将它指向两个不同的地方。