4

我只想将一个输入文档(它只是一个文件引用列表)转换为几个输出文档。

这有效:

    <p:xslt name="MainTransformation1-b">
        <p:input port="source">
            <p:pipe step="CI" port="result"/>
        </p:input>
        <p:input port="stylesheet">
            <p:document href="Transform.xsl"/>
        </p:input>
        <p:with-param name="ProjectName" select="$Name"/>
    </p:xslt>

    <p:sink/>

    <p:for-each>
        <p:iteration-source>
            <p:pipe step="MainTransformation1-b" port="secondary"/>
        </p:iteration-source>
        <p:store method="text" media-type="text/text">
            <p:with-option name="href" select="p:base-uri()"/>
        </p:store>
    </p:for-each>

XSL:

<xsl:template match="/">
    <xsl:for-each select="//p">
        <xsl:result-document href="{'tmp', position(), '.xml'}">
            <xsl:apply-templates/>
        </xsl:result-document>
    </xsl:for-each>
</xsl:template>

问题:输出文档不包含根元素 - 我需要输出框架,稍后在此过程中创建框架文件并包含所有输出文档。

错误信息:

09.11.2012 13:06:27 com.xmlcalabash.util.DefaultXProcMessageListener 错误 SCHWERWIEGEND: err:XD0001:XD0001 09.11.2012 13:06:27 com.xmlcalabash.drivers.Main 错误 SCHWERWIEGEND:如果非XML 资源在步骤输出中产生或在步骤输入中到达。

当然它不是 XML - 我试图代表 @method (method=text) 修复它,但它没有奏效。

有任何想法吗?我搜索了适用的解决方案,但我只找到一个条目说这在此刻是不可能的......希望不是

4

1 回答 1

3

p:store 的输入必须是 XML。将转换的文本输出包装在包装元素中,并对其应用 method=text,包装元素将被自动忽略,因此您将获得文本/纯文件..

于 2012-11-09T12:31:14.647 回答