32.5. Saxon 활성화

32.5.1. 사전 요구 사항

Saxon 구문 분석기를 사용하기 위한 전제 조건은 camel-saxon 아티팩트에 종속성을 추가하는 것입니다(Maven POM에 이 종속성을 추가하거나 Maven POM을 사용하는 경우 또는 camel-saxon-2.23.2.fuse-790054-redhat-00001.jar 파일을 클래스 경로에 추가).

32.5.2. Java DSL에서 Saxon 구문 분석기 사용

Java DSL에서 Saxon 구문 분석기를 활성화하는 가장 간단한 방법은 saxon() fluent 빌더 메서드를 호출하는 것입니다. 예를 들어 다음 예와 같이 Saxon 구문 분석기를 호출할 수 있습니다.

// Java
// create a builder to evaluate the xpath using saxon
XPathBuilder builder = XPathBuilder.xpath("tokenize(/foo/bar, '_')[2]").saxon();

// evaluate as a String result
String result = builder.evaluate(context, "<foo><bar>abc_def_ghi</bar></foo>");

32.5.3. XML DSL에서 Saxon 구문 분석기 사용

XML DSL에서 Saxon 구문 분석기를 활성화하는 가장 간단한 방법은 xpath 요소에서 saxon 속성을 true로 설정하는 것입니다. 예를 들어 다음 예와 같이 Saxon 구문 분석기를 호출할 수 있습니다.

<xpath saxon="true" resultType="java.lang.String">current-dateTime()</xpath>

32.5.4. Saxon을 사용한 프로그래밍

애플리케이션 코드에서 Saxon XML 구문 분석기를 사용하려면 다음 코드를 사용하여 명시적으로 Saxon transformer 팩토리 인스턴스를 생성할 수 있습니다.

// Java
import javax.xml.transform.TransformerFactory;
import net.sf.saxon.TransformerFactoryImpl;
...
TransformerFactory saxonFactory = new net.sf.saxon.TransformerFactoryImpl();

반면 generic CryostatP API를 사용하여 transformer 팩토리 인스턴스를 생성하려면 먼저 ESBInstall/etc/system.properties 파일에서 javax.xml.transform.TransformerFactory 속성을 설정해야 합니다.

javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl

그런 다음 일반 CryostatP API를 사용하여 다음과 같이 Saxon 팩토리를 인스턴스화할 수 있습니다.

// Java
import javax.xml.transform.TransformerFactory;
...
TransformerFactory factory = TransformerFactory.newInstance();

애플리케이션이 Saxon을 사용하는 타사 라이브러리에 종속되는 경우 두 번째 일반적인 접근 방식을 사용해야 할 수 있습니다.

참고

Saxon 라이브러리는 OSGi 번들인 net.sf.saxon/saxon9he 로 컨테이너에 설치해야 합니다(일반적으로 기본적으로 설치됨). 7.1 이전 버전의 Fuse ESB에서는 일반 CryostatP API를 사용하여 Saxon을 로드할 수 없습니다.