고친 과정 | |
---|---|
고침 $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"});
자신의 GUI를 개발하고자 한다면, mx4j-tools.jar파일의 개발된 GUI에 대한 xsl 소스를 참고하기 바란다.
개발에 있어 도움을 줄 수 있을 만한 중요한 것은 묵시적인 파라미터가 템플릿으로 전달되었다는 것이다. request.variable 파라미터 형태로 모든 request 변수들을 포함한다. 다음 request 예제를 보면,
http://host.port/mbean?objectname=Test:name=test1&template=testmbean
여기에는 request.objectname과 request.template 두개의 파라미터가 있을 것이다.