XSLTProcessor

Carlos Quiroz

(번역)전 준식(locus@nextel.co.kr)

Jin Woo, Min (Korean Translation)

고친 과정
고침 $Revision: 1.2 $$Date: 2002/09/27 09:36:09 $

소개

XSLTProcessor는 HttpAdaptor의 출력을 커스터마이즈하는데 사용된다. 기본적으로 HttpAdaptor의 XML 출력을 받아서 XSL을 사용하여 처리한다. 원하는 대로 출력의 형태를 변경하는 것이 가능하다. 대개, 표준 프라우저에서 표시될 수 있는 HTML 파일 형태를 생성한다.

실제 사용될 파일은 File 프로퍼티를 통해서 지정된다. 이것으로 템플릿 파일이 있는 디렉토리를 지정한다. 또는 모든 파일을 .jar나 .zip파일로 묶어서 제공할 수 있다.

프로세서는 HTTP 요청에 대해 어떤 xsl 템플릿을 사용할 지를 확인한다. 즉, 만약 요청이 mbean이면 mbean.xsl파일을 찾으려고 할 거시고 이를 사용하여 XML 트리 결과를 처리한다. 템플릿 변수를 전달하여 이를 변경할 수 잇다. 예를 들어 http://host:port/mbean?objectname=Test:name=test1&template=testmbean 이경의 HttpAdaptor는 mbean.xsl파일을 사용하는 대신 tesetmbean.xsl파일을 사용하여 결과 트리를 생성하게 될 것이다.

신원 파일(indentity file)은 배포본에 포함된다. 여러분은 이것을 사용하여 원본 XML 메시지를 얻을 수 있다. 예를 들어 http://host:port/mbean?objectname=Test:name=test1&template=identity

이미지나 raw HTML 같은 파일들을 제공하기 원하면, 대상 파일 시스템에 추가하면 된다. 프로세서는 확장자에 따라서 분류된 몇가지 MIME 형태를 처리한다. 다음을 포함한다 :

  • GIF images: extension=".gif", MIME type: "image/gif"

  • PNG images: extension=".png", MIME type: "image/png"

  • JPG images: extension=".jpg", MIME type: "image/jpg"

  • HTML raw files: extension=".html,.html", MIME type: "text/html"

  • HTML raw files: extension=".css", MIME type: "text/css"

addMimeType 메소드를 이용하여 MIME 타입을 추가할 수 있다.

속성들

XSLTProcessor는 다음과 같은 속성과 operation을 가지고 있어 동작을 커스터마이즈 할 수 있다.

  • File: xsl 파일을 찾을 위치를 지정한다. 만약 target 파일이 디렉토리면, xsl 파일이 그 디렉토리에 있다고 가정한다. 또, .jar나 .zip파일을 지정했다면, 파일이 거기에 있다고 가정한다. 파일시스템으로 지정하는 것이 테스트를 위해 유용하다.

  • PathInJar: xsl 파일이 있는 디렉토리나 jar파일을 설정한다.

  • UseJar: 읽기전용. 프로세서가 jar파일에서 부터 읽어들일 것인지를 표시.

  • UsePath: 읽기전용. 프로세서가 디렉토리로부터 읽어들일 것인지를 표시.

  • UseCache: 변환된 객체들을 캐쉬할 것일지를 표시. 이는 프로세서의 속도를 향상시킨다. 보통 true로 설정되어 있다. 테스트를 쉽게 위해서는 false로 설정할 수 있다.

  • addMimeType: addMimeType(".pdf", "application/pdf") 형태로 mime type을 추가한다. XSLTProcessor는 주어진 확장자의 파일에 대해 이 MIME 타입을 사용하게 될 것이다.

예를 들어 다음과 같은 attribute들을 설정할 수 있다.

	
ObjectName processorName = new ObjectName("Server:name=XSLTProcessor");
server.createMBean("mx4j.adaptor.http.XSLTProcessor", processorName, null);

// set it to use a dir
server.setAttribute(processorName, new Attribute("File", "/home/tibu/devel/mx4j/src/core/mx4j/adaptor/http/xsl"));

// set it to use a compressed file
server.setAttribute(processorName, new Attribute("File", "/home/tibu/skins.jar"));

// set the target dir
server.setAttribute(processorName, new Attribute("PathInJar", "/mx4j/adaptor/http/xsl"));

// set not to use cache
server.setAttribute(processorName, new Attribute("UseCache", Boolean.FALSE));

// adds a mime type
server.invoke(processorName, "addMimeType", new Object[] {".pdf", "application/pdf"}, new String[] {"java.lang.String", "java.lang.String"});
	
				

XSL 개발

자신의 GUI를 개발하고자 한다면, mx4j-tools.jar파일의 개발된 GUI에 대한 xsl 소스를 참고하기 바란다.

개발에 있어 도움을 줄 수 있을 만한 중요한 것은 묵시적인 파라미터가 템플릿으로 전달되었다는 것이다. request.variable 파라미터 형태로 모든 request 변수들을 포함한다. 다음 request 예제를 보면,

http://host.port/mbean?objectname=Test:name=test1&template=testmbean

여기에는 request.objectname과 request.template 두개의 파라미터가 있을 것이다.