2009-07-13 6 views
0

여러 입력 XML 파일을 처리하고 파일을 자바 스크립트 코드로 출력하는 코드 생성에 사용하는 XSLT 스크립트가 있습니다. 각 XML 입력 파일에 대해 하나의 Javascript 파일을 출력합니다.XSLT 결과 문서에 추가

그래서, 나는 다음과 같은 파일이있을 것입니다/변환이 발생하는 :

view1.xml -> view1.js 
view2.xml -> view2.js 
... 

지금은 내가 각 입력 파일에 대한 정보를 추가해야합니다 곳도 XSL 처리하는 동안 하나 개의 추가 파일을 생성 할 수있는 요구 사항이 일반적인 Javascript 파일로 처리됩니다.

그래서, 지금 내가 가진 것 :

view1.xml -> view1.js/append to common.js 
view2.xml -> view2.js/append to common.js 
... 

내 질문은, 그것은 여러 입력 파일을 처리하는 동안 파일에 추가 할 수 있습니까? 현재 Saxon 9.1.0.7을 사용하고 있으며 xsl : result-document 요소를 살펴 봤지만 이전에 작성한 내용을 덮어 씁니다.

감사합니다.

+0

추가 할 수 있도록 Saxon의 일반적인 솔루션 또는 올바른 구성을 찾으십니까? – Yuval

+0

Saxon 특정 구성은 가능하면 좋을 것입니다. – Steve

답변

1

아니요, XSLT 내에서 기존 (비 XML, 짝수) 파일에 추가 할 수 있다고 생각하지 않습니다.

반면에 결과를 파일에 추가하는 것은 변환을 실행하는 환경에서 쉽게 수행됩니다. 프로그래밍 언어 또는 쉘이라면, 텍스트 파일 연결은 사소한 훈련이어야합니다. XSLT를 구부릴 수있는 방법을 찾으려는 대신, 거기에 해보는 것이 좋습니다.

+0

좋은 지적. 처리 된 각 입력 파일의 속성이 필요하지만 스크립팅 언어를 사용하여이 정보를 쉽게 추출 할 수 있으며이 정보를 추가 할 수 있습니다. 감사. – Steve

+0

흠 .. 나는 놓쳤다. 존재하지 않는 문제를 해결하려고 노력하지 않는다. :-) –

0

XSLT "document()"에 함수가 있습니다. 이 기능을 사용하면 단일 XSLT에서 여러 xml 입력 파일을 처리 할 수 ​​있으므로 단일 출력을 처리 할 수 ​​있습니다. 귀하의 경우에 도움이되는지 확실하지 않습니다.

몇 가지 것이 좋습니다.

<xsl:apply-templates select="document('doc1.xml')"/> 
<xsl:apply-templates select="document('doc2.xml')"/> 
<xsl:apply-templates select="document('doc3.xml')"/> 

<xsl:template match='nodeX">do something</xsl:template> 
<xsl:template match='nodeY">do something else</xsl:template> 
+0

입력 파일 이름을 지정하지 않아도됩니다. 지금은 입력 디렉토리의 모든 파일을 처리하고 변환 파일의 출력 디렉토리를 제공하고 있습니다. 더 많은 입력 파일이 생성 될 것이고, 새로운 입력 파일마다 document() 요소를 추가 할 필요가 없습니다. – Steve

+0

당신은 (다른 스크립트를 사용하여) 다른 XML 파일을 즉시 작성할 수 있습니다. 모든 파일의 이름을 포함하고 처리하고 document() 태그를 XSLT의 루프에 추가합니다. 이것은 지금 내가 생각할 수있는 최선의 것입니다. :-) –

+0

좀 더 직선적 인 방법이 있기를 바랄 것이지만 다른 옵션이 없다면 작동 할 수있는 것처럼 들립니다. 개미 (Ant)를 사용하여 빌드에 스크립트 호출을 추가하고 다른 변형을 호출 할 수 있습니다. 감사합니다 – Steve

관련 문제