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 に答える