2009-10-12 4 views
1

나는 XSLT에 관해 가지고 있었던 previous question에 대한 답변에 대한 후속 조치입니다.XSLT 변환에 노드 셋을 매개 변수로 전달하는 Toolchains는 무엇입니까?

요약하면 EXSLT가 없으면 XSLT를 사용하면 문자열 값이있는 xpath 표현식을 동적으로 만들 수 없습니다. 제안 된 해결 방법 중 하나는 노드 집합으로는 내가 변환을 할 아파치 Ant를 사용하고 있었다

를 변환하면 변환을 실행하고 통과하기 전에 입력 문서의 DOM을 조회 할 수

을했고, the manual xslt/스타일 작업의 매개 변수에

매개 변수에 배치 할 텍스트 값입니다. 원래는 XSL 표현식이었습니다.

Apache Ant는이 기능을 지원하지 않습니다. 그것은 나를 궁금해하지만,이 작업의이 의미 체계를 어떻게 지원할 것인가?

그렇다면 Toolchains 또는 시스템이 원본 문서의 노드 집합을 매개 변수로 변환에 전달하는 것을 지원하는 도구 및 시스템은 무엇입니까? 예제 코드의 보너스 포인트.

+0

개미를 통해 매개 변수를 xslt에 전달하거나 빌드 파일의 일부를 매개 변수로 xslt 스타일 시트에 전달하려면 필요합니까? –

답변

0

표준 xslt 1.0에서는 노드 집합을 매개 변수로 전달할 수 없습니다. 이렇게하려면 xslt 2.0 파서를 사용해야합니다. 내가 제대로 질문을 이해 할 수없는 것 같습니다하지만 당신이 참조하는 스레드와 따옴표에 내놓고 것은 나는 다음과 같은 제안을 가지고 올 수 있기 때문에 내 대답에 대해 완전히 확실하지 않다 http://wiki.apache.org/ant/UsingAntWithXSLT20AndSaxon

+0

노드 집합은 XSLT/XPath 1.0에 유효한 데이터 형식이며 매개 변수로 전달할 수 있습니다. 그것을하는 방법? XSLT 프로세서에 따라 다릅니다. –

0

: 예를 들어

:

의 build.xml :

<?xml version="1.0" encoding="UTF-8"?> 

<project name="Test XSLT" default="test-xslt" basedir="."> 
    <target name="test-xslt"> 
     <xslt in="test.xml" style="ant-with-param.xsl" out="ant-with-param-out.xml"> 
      <param name="param-set-id" expression="2"/> 
     </xslt> 
    </target> 
</project> 

test.xml의 :

<?xml version="1.0" encoding="UTF-8"?> 

<params> 
    <set id="1"> 
     <param name="name" value="Name from the first set"/> 
    </set> 
    <set id="2"> 
     <param name="name" value="Name from the second set"/> 
    </set> 
</params> 

개미와-param.xsl :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:exsl="http://exslt.org/common" 
       extension-element-prefixes="exsl"> 
    <xsl:param name="param-set-id"/> 
    <xsl:variable name="param-set" select="//params/set[@id = $param-set-id]"/> 

    <xsl:template match="/"> 
     <name> 
      <xsl:value-of select="exsl:node-set($param-set)//param[@name = 'name']/@value"/> 
     </name> 
    </xsl:template> 
</xsl:stylesheet> 

출력 :

<?xml version="1.0" encoding="UTF-8"?> 
<name>Name from the second set</name> 

감안 스타일 시트의 값을 상기 입력 문서 내놓고의 파라미터를 가져 변수는 빌드 파일에서 전달됩니다. 매개 변수는 원본 문서의 XPath 표현식을 사용하여 가져오고 나중에 exsl:node-set() 확장 기능을 사용하여 사용합니다. 기본적으로 antXalan을 xslt 프로세서로 사용합니다. 확장 기능의 전체 목록은 project's home page에서 확인할 수 있습니다.

관련 문제