2009-05-18 3 views
2

나는 XML 파이프 라인 언어 인 xprochttp://xmlcalabash.com/을 가지고 놀고있다. 큰 XML 문서를 스트리밍하는 예제를 찾고 싶습니다. x 축 이상 내가 루프 (스트리밍)로 진행하는 방법을XProc로 XML 스트리밍

<Books> 
<Book> 
    <title>Book-1</title> 
</Book> 
<Book> 
    <title>Book-2</title> 
</Book> 
<Book> 
    <title>Book-3</title> 
</Book> 

<!-- many many.... --> 
<Book> 
    <title>Book-N</title> 
</Book> 
</Books> 

>

<Books> 
<Book> 
    <title>Book-x</title> 
</Book> 
</Books> 

같은 N 문서와 XSLT 각 문서를 취급 : 예를 들어 , 주어진 다음 거대한 XML 문서 ? xproc로 가능합니까?

답변

1

스트리밍 관련 XProc Dev 목록에 대한 최근 토론이 기억납니다. 칼라 바쉬가 스트리밍을 시도하지 않는 것 같습니다. Norman Walsh 메시지 here을 참조하십시오.

색슨 SA는 세부 사항을 참조하십시오, XSLT와 XQuery를 스트리밍 지원 http://www.saxonica.com/documentation/sourcedocs/serial.html

+0

네, 며칠 전이 메시지를 보았습니다. 그러나 예제가 제공되지 않았습니다. 그러나, Saxonica에 대한 언급에 감사드립니다. – Pierre

1

예, 스트리밍을 지원하고 싶은만큼, XML 호리병박에 대한 내 진짜 목표는 완전성과 정확성이었다.

나는/색슨의 기능을 스트리밍 당겨 푸시의 이상을 사용하는 XML 호리병박의 내부를 재 작업에 대한 몇 가지 아이디어를 가지고 있지만, 내 "할 일"목록에있는 다른 일들도 많이있다 : -/

1

EMC의 Calumet (http://developer.emc.com/xmltech)도 스트리밍을하지 않습니다. 지금까지 주요 초점은 xdb 원시 XML 데이터베이스와 같은 다른 XML 관련 도구와의 통합 가능성과 함께 XProc 사양을 준수했습니다. 스트리밍에 대한 지원은 내 레이더에 있지만, 지금 당장 그 시점에 도달 할 수 있는지 여부는 알 수 없습니다.

0

대부분의 XProc 프로세서가 단계간에 데이터를 스트리밍하지는 않지만 이것이 반드시 케이스가 작동하지 않을 수 있음을 반드시 의미하지는 않습니다 (예 : 메모리 사용량 측면에서 폭발적입니다). 그것은 XSLT 단계의 결과로 무엇을하고 싶은지에 달려 있습니다.

하나의 큰 출력 파일을 작성하려고하면 결과를 수집하는 경우 문제가 될 수 있습니다. 그러나이 경우 스트리밍 솔루션 (SAX, STaX, JOOST 파서 등)을 사용하는 것이 더 나을 것입니다.

각 XSLT의 결과를 별도로 저장하면 문제가 훨씬 줄어 듭니다. 초기 문서를로드 할 수있는 충분한 메모리가 있는지 염려해야하며 각 문서에서 처리해야합니다. 확실하지 행동을 얼마나 잘 색슨 XMLCalabash 아래,하지만 난 개까지 50메가바이트의 크기가 매우 큰 문제 ..

건배 할 필요가 없습니다 것을

다음
1

당신이 XProc 함께 할 수있는 방법입니다 기대 QuiXProc로 스트리밍 할 수 있습니다.

<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" version="1.0"> 
    <p:load href="hugedocument.xml"/> 
    <p:for-each> 
    <p:iteration-source select="/Books/Book"/> 
    <p:xslt> 
     <p:input port="stylesheet"> 
     <p:document href="book.xsl"/> 
     </p:input> 
     <p:input port="parameters"> 
     <p:empty/> 
     </p:input> 
    </p:xslt> 
    </p:for-each> 
    <p:wrap-sequence wrapper="Books"/>  
    <p:store href="hugedocument.res.xml"/> 
</p:declare-step>