2013-03-19 3 views
2

* 강한 텍스트 * 완성되기 전에 XSLT와 일부 쉘 스크립트를 약 4 단계로 결합한 프로덕션 흐름이 있습니다. 나는 각 단계를 수동으로 지금 당장 실행한다.XSLT가 OS 레벨에서 쉘 스크립트를 실행할 수 있습니까?

Linux의 명령 줄에서 Saxon 9를 사용하고 있습니다. xsl의 쉘 스크립트를 대신 실행할 수 있습니까?

업데이트을 (내가 개미와 다른 방법으로 원하는 결과를 달성하거나 .. 확인하지만, 그렇게 할 수있는 엄청난 노력이 아닌 경우 XSLT를 유지하는 것을 선호 할 수 알고) : 나는했습니다 Xproc을 사용하여 쉘 스크립트를 최소화하고 속도를 높였습니다. 나는 그 결과에 완전히 만족하지는 못했지만 Xproc은 삶을 향상 시켰습니다. 아래 카이의 제안은 좋아 보인다. 그러나 나는 아직 시도하지 않았다.

+1

9 개월 후에 에필로그를 추가하는 Q ... 내 대답에 답하고 있지 않습니다. XPROC는 앞서 언급 한 필요성을 충족시키는 것으로 나타났습니다. 대답은 – Paulb

답변

2

다른 외부 Java 기능과 동일한 방식으로 java.lang.Runtime.exec()를 호출 할 수 있습니다.

+0

입니다. 내가 듣고 싶었던 것은 아니었다. 왜냐하면 나는 자바를 좋아하지 않기 때문이다. BTW, 귀하의 XSLT 2.0 책은 요즘 내 책상에 눈에 띄는 자리가 있습니다. 나는 그것을 좋아합니다. 감사합니다. – Paulb

+0

xalan-C++에서도 가능합니까? java.lang.Runtime.exec() 대신에 무엇을 사용합니까? – n00b

4

저는 Java에 정통한 사람도 아니지만, Michael Kay의 튜토리얼은 Saxonica website에 있습니다.

다음은 내가 무엇을했는지, 나를 위해 잘 작동하는 것입니다 : XSLT 스타일 시트의 루트 요소에서 함수에 대한 네임 스페이스를 할당했습니다. (제 경우에는 압축 해제를 사용하고 있기 때문에 접두사를 unzip으로 명명했습니다. 하지만 확실히 그 무엇이든 될 수 있습니다.)

xmlns:unzip="java:java.lang.Runtime" 

나중에 호출 할 배치 파일의 파일 경로가있는 변수를 정의합니다. 그런 다음 사용하고 있습니다.

<xsl:result-document href="{$batchFile}" method="text"> ... </result document> 

을 사용하여 배치 파일을 만듭니다. (압축 해제는 단지 명령으로 할 수 있었지만, 나는 압축 해제 명령과 일부 변경 디렉토리 명령 및 기타 작은 것들을 결합해야하므로 배치 파일 버전을보다 편리하게 발견했습니다. 그리고 배치 파일을 사용하면 . 내 배치 파일을 실행할 필요하면 XSLT 시트에서 호출 할 수있는보다 정교한 작업)

, 나는 XSL을 삽입 : 메시지를 다음과 같이 : 안부를하는 데 도움이

<xsl:message>Executing <xsl:value-of select="unzip:exec(unzip:getRuntime(),concat('cmd /c /y start ',$batchFile))"/></xsl:message> 

희망을, 카이

+0

감사합니다. 창의적인 솔루션. 앞으로의 프로젝트에서이를 염두에 두겠습니다. – Paulb

+0

도 xalan-C++에서 가능합니까? java.lang.Runtime.exec() 대신에 무엇을 사용할 것인가? – n00b

관련 문제