2013-07-25 5 views
2

Sachon (버전 8.9)을 호출하는 배치 파일을 XProc 파이프 라인 (Calabash)으로 변환하려고합니다. 매개 변수 설정이 방법으로 스타일 시트에 정의되어XSLT with XProc - 필수 유형의 매개 변수 바인딩

java -jar saxon8.jar -o out.xml in.xml style.xsl +config=config-file.cfg 

:

<xsl:param name="config" as="document-node()"/> 

XProc 부분은 다음과 같습니다

<p:load name="configLoad"> 
    <p:with-option name="href" select="'config-file.cfg'"/> 
</p:load> 
<p:xslt name="config"> 
    <p:input port="source"> 
     <p:document href="in.xml"/> 
    </p:input> 
    <p:input port="parameters"> 
     <p:inline> 
      <c:param name="config"> 
       <p:pipe port="result" step="configLoad"/> 
      </c:param> 
     </p:inline> 
    </p:input> 
    <p:input port="stylesheet"> 
     <p:document href="style.xsl"/> 
    </p:input> 
</p:xslt> 

오류 메시지 이 내 배치 전화입니다 이 :

필수 i 변수 $ config의 값의 형식은 document-node()입니다. 는 config 파일은 나중에 다른 XSLT의 tranformations에 의해 생성되어야하기 때문에, 문자열

나는 <p:exec> 단계를 알고 있지만 내가 그것을 사용하지 않을 : 제공된 값은 항목 유형은 xs 있습니다. 또한 다른 XProc 단계에서도 재사용됩니다.

XSLT 스타일 시트를 올바른 매개 변수 유형으로 호출 할 수 있습니까? 도움 주셔서 감사합니다.

답변

2

현재 XProc 표준에 대해 불충분 한 것처럼 보입니다. 값이 인 데이터 형식이 인 문자열이 untypedAtomic이되어야하는 매개 변수는 이름/값 쌍입니다. 동적 구성의 내용을 구성 할 수 없지만, 단지 고정 된 파일의 내용을 주위에 전달하는 경우 .. 왜

http://www.w3.org/TR/xproc/#parameters

을 부탁하지 마십시오, 당신은 단지 경로를 통해 전달할 수 적절한 구성 파일을 만들고 fn : doc()을 사용하여 XSLT 파일에서 읽습니다.

비행 중에 설정 파일을 쓰는 것을 권장합니다. XProc 내의 실행 순서는 예상대로 순차적이지 않을 수 있습니다 ..

각 구성 설정을 별도의 매개 변수로 전달할 수도 있지만 각 설정은 여전히 ​​플랫 매개 변수 값 유형을 준수해야합니다.

HTH!

+0

감사합니다. 그게 확실합니다. 나는 그것을 생각했지만, 나는 당신이 링크 된이 선을 놓쳤다. 예, 실행 순서가 문제 중 하나였습니다. 나는 p : exec 단계를 거절했습니다. 글쎄, 나는 선언 된 단계에서 그것을 포함하여 명령을 강요 할 수 있다고 생각한다. 하지만 좋은 해결책은 아닙니다. 도움을 주셔서 감사합니다. –

+0

나는 같은 문제를 만난다. 내 XSLT는 2 xml 파일을받습니다. 하나는 기본 입력 용이고 다른 하나는 매개 변수 용입니다. 두 번째 것은 XProc의 또 다른 XSLT에 의해 자동 생성됩니다. 임시 해결책의 유일한 방법은 p : store에 의해 XProc에서 임시로 두 번째 파일을 생성하고이 임시 파일의 URL을 XSLT에 전달하고 전체 파이프 라인이 끝난 후에 삭제하는 것입니다. – chansey

+0

@chansey 두 소스의 입력을 집계하여 하나의 입력 문서로 두 번째 XSLT 단계에 입력 할 수 있다고 확신합니다. 디스크에서 쓰기 및 읽기가 순차적이거나 동기화되지 않을 수도 있습니다. 이것에 대해 새로운 질문을 올릴 수 있습니까? – grtjn