2012-11-09 54 views
3

我只是想變換輸入文檔(它只是一個文件引用列表)的幾個輸出文檔。轉換輸出非XML文檔

工作的:

<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> 

問題:輸出文件不包含根元素 - 我需要輸出幀和以後的過程中框架文件已創建幷包含所有輸出文檔。

錯誤消息:

2012年9月11日13時06分27秒com.xmlcalabash.util.DefaultXProcMessageListener錯誤 SCHWERWIEGEND:ERR:XD0001:XD0001 2012年9月11日13時06分27秒com.xmlcalabash.drivers。主要誤差 SCHWERWIEGEND:如果非XML資源上產生一個輸出步驟或到達上一步驟輸入它是一個動態錯誤。

當然,它不是XML - 我試圖代表@method(method = text)修復它,但它沒有奏效。

任何想法?我搜索適用的解決方案,但我只發現的p條目說,目前這是不可能的......希望不是

回答

3

輸入:商店必須是XML。總結你的包裝元素的變換文本輸出,並申請方法=上的文字,包裝元素將被自動忽略,所以你會得到你text/plain的文件..

HTH!

+0

對不起,再次詢問 - 但我剛添加的​​前的for-each循環 - 但它仍然不工作。 – Oliver

+1

@oliver,在你的xslt裏面加上包裝,這應該會改善事情.. – grtjn

+0

@grtijn我遇到了同樣的問題。我的XSLT輸出使用輸出純文本。在XProc中,我調用來執行該XSLT,但發生錯誤:「p:xslt返回了非XML結果」。有什麼方法可以解決它嗎?我不想包裝XSLT中的根元素,因爲我想保持XSLT乾淨。輸出純文本的XSLT是我在XSLT中的最後一步。 – chansey