2012-11-09 3 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> 

문제 : 출력 문서는 루트 요소가 포함되어 있지 않습니다 - I 출력 프레임이 필요하고 나중에 과정에서 프레임 파일 모든 출력 문서가 포함됩니다.

오류 메시지 :

2012년 9월 11일 13시 6분 27초 com.xmlcalabash.util.DefaultXProcMessageListener 오류 SCHWERWIEGEND : 오류 : XD0001 : XD0001 2012년 9월 11일 13시 6분 27초 com.xmlcalabash.drivers. 주 오류 SCHWERWIEGEND : 비 XML 자원이 단계 출력에서 ​​생성되거나 단계 입력에 도달하면 동적 오류입니다.

물론 XML이 아닙니다. @method (method = text)를 대신하여 수정하려고했지만 작동하지 않았습니다.

아이디어가 있으십니까? 적용 가능한 솔루션을 찾았지만 지금은 가능하지 않다고 말하는 항목을 발견했습니다. 희망 사항이 없습니다.

답변

3

p : store에 대한 입력은 XML이어야합니다. 래퍼 요소에서 변형의 텍스트 출력을 감싸고 method = text를 적용하면 래퍼 요소가 자동으로 무시되므로 텍스트/일반 파일을 얻을 수 있습니다.

HTH!

+0

미안하지만 다시 묻기를 바랍니다. 각 루프에 대해 전에

를 추가했지만 여전히 작동하지 않습니다. – Oliver

+1

@oliver, 물건을 개선해야합니다 귀하의 xslt 안에 래퍼를 추가하십시오. – grtjn

+0

@ grtijn 나는 같은 문제를 만난다. 내 XSLT는 을 사용하여 순수 텍스트를 출력합니다. XProc에서 XSLT를 실행하려면 을 호출하지만 오류가 발생했습니다. "p : xslt가 비 XML 결과를 반환했습니다." 해결 방법이 있습니까? XSLT를 깨끗하게 유지하기 위해 XSLT의 루트 요소를 래퍼에 래핑하고 싶지 않습니다. 순수 텍스트를 출력하는 XSLT가 XSLT의 마지막 단계입니다. – chansey