2010-12-20 6 views
0

Java에서 XSL 템플릿을 사용하고 있으며 Java 코드를 호출하는 사용자 정의 태그를 작성한 다음 템플릿에 결과를 저장하려고합니다. XOM을 XML 엔진으로 사용하고 있습니다. 저는 XOM과 XSL 모두 새로운 것입니다. 그래서 이것이 똑똑한 아이디어인지 확실하지 않습니다.템플릿 내에서 Java 코드를 호출하는 Java + XSL

A I이 원하는 무언가의 아주 간단한 예는 my_nscustom tag

<xsl:template name="foo"> 
<my_ns:custom_tag /> 
</xsl:template> 

public Node custom_tag() { 
    return Node("<a/>"); 
} 

#result of calling the template foo 
<a/> 

내가 제안을 열려있어 메소드 호출의 다른 방법을 포함하기위한 것으로 'custom_tag'와 사용자 정의 네임 스페이스이고, 이것이다 XSL 템플릿에서 자바.

답변

3

이것은 XSLT 프로세서가 XML 엔진/파서/api 이상으로 템플릿 내에서 자바 코드를 실행/호출 할 수 있는지에 대해 더 궁금합니다. Java 용 기본 XSLT 프로세서는 Apache Software Foundation의 Xalan-C 또는 Xalan-J (어느 것을 기억할 수없는)입니다. 나는 그들 모두가 메서드 내에서 자바 코드를 실행하는 확장 함수를 허용한다고 생각한다. xalan-j 확장 함수를 사용하기 전에 XSL 스타일 시트 내에서 JDBC sql 쿼리를 수행했습니다. 나는 또한 Saxon XSLT 프로세서가이 기능을 허용한다는 것을 기억한다. XSLT 프로세서를 검색하여 구체적인 구현 방법을 알아 보겠습니다.

이것이 좋은 아이디어인지 아닌지에 대한 질문은 실제로 문제에 달려 있습니다. 위에서 언급 한 SQL 확장 함수를 사용했지만이 경우 청구서에 잘 어울리지 만 이후에는 정말 더러워졌습니다. 내가 말하는 이유는 공급 업체별 확장 기능을 추가 할 때 XSLT 프로세서 간의 이식성을 잃어 버리기 때문입니다.

예제에서는 출력에 새 노드를 만드는 것만 보여줍니다. 그렇다면이 경우 Java가 XSLT의 주요 기능 중 하나 인 노드를 만들 때 자바를 가질 필요가 없습니다. . 난 당신의 진짜 문제가 단순히 노드를 만드는 것보다 더 복잡한 것 같아요 그래서 당신이 찾고있는 결과를 얻으려면 Java에서 모든 작업을 수행 할 수 또는 Java에서 작업을 수행하고 매개 변수를 전달하는 것이 좋습니다 제안 할 것입니다 (xsl : param 요소를 사용하는 이름/값 쌍)을 런타임에 XSL 스타일 시트에 추가합니다.

:

다음은 시작하는 몇 가지 빠른 사이트입니다

관련 문제