결과 직렬화
애플리케이션이 XPath 또는 XQuery 표현식을 평가하거나 XSLT 스타일시트에서 변환을 수행한 후에 Java™ 문자열로 또는 파일로 표시되는 실제 XML 문서로 출력을 작성하려고 할 수 있습니다. XML 문서로 결과를 렌더링하는 프로세스는 직렬화라고 합니다.
프로시저
- XSequenceCursor를 직렬화하십시오.
애플리케이션은 XSequenceCursor.exportSequence 메소드를 호출하여 XSequenceCursor 인터페이스의 인스턴스로 표시되는 시퀀스를 직렬화할 수 있습니다. 이 메소드에서 인수는 javax.xml.transform.Result 인터페이스의 인스턴스이며 선택적으로 XOutputParameters 인터페이스의 인스턴스이기도 합니다.
Result 인터페이스의 인스턴스가 javax.xml.transform.stream.StreamResult 클래스의 인스턴스이기도 하면 XSLT 2.0 and XQuery 1.0 Serialization Recommendation에서 설명한 대로 시퀀스를 직렬화할 수 있습니다. StreamResult 오브젝트는 java.io.Writer 클래스 또는 java.io.OutputStream 클래스의 인스턴스를 포함할 수 있습니다. 이 경우 프로세서는 직렬화된 시퀀스를 작성합니다.
XFactory.newOutputParameters()를 호출하여 XOutputParameters 인터페이스의 인스턴스를 작성하고 기본 직렬화 매개변수 설정을 대체하도록 해당 오브젝트에서 메소드를 호출할 수 있습니다.XFactory factory = XFactory.newInstance(); XPathExecutable expr = factory.prepareXPath("/purchaseOrder/item[@price > 1000]"); XSequenceCursor exprResult = expr.execute(new StreamSource(inputFile)); System.out.println("Items purchased costing more than $1000"); if (exprResult != null) { // Set indenting in order to pretty-print result XOutputParameters params = factory.newOutputParameters(); params.setIndent(true); exprResult.exportSequence(new StreamResult(System.out), params); } else { System.out.println("None found"); }
또한 XSLTExecutable 인터페이스의 인스턴스에서 getOutputParameters() 메소드 중 하나를 호출하여 XSLT 스타일시트의 특정 출력 정의와 연관된 직렬화 매개변수를 가져올 수 있습니다. 이름 지정된 출력 정의의 경우 XSLTExecutable.getOutputParameters(javax.xml.namespace.QName) 메소드를 사용하여 직렬화 매개변수를 가져오거나 이름 지정되지 않은 출력 정의의 경우 인수가 없는 XSLTExecutable.getOutputParameters() 메소드를 사용하여 가져옵니다. 이를 통해 결과를 직렬화하기 전에 변환에서 생성된 XSequenceCursor 인터페이스의 인스턴스를 사용하여 변환 결과에서 몇 가지 처리 후 작업을 수행하고자 할 수 있습니다. XSLTExecutable.getOutputParameters() 메소드 중 하나로 리턴되는 XOutputParameters 인터페이스의 인스턴스에서 직렬화 매개변수의 설정을 변경하는 경우 스타일시트에서 출력 정의에 영향을 주지 않습니다.XFactory factory = XFactory.newInstance(); XSLTExecutable style = factory.prepareXSLT(new StreamSource("style.xsl")); XSequenceCursor xformResult = style.execute(new StreamSource("purchase.xml"); XOutputParameters params = style.getOutputParameters(new QName("my-output-definition")); params.setMethod(XOutputParameters.METHOD_XHTML); xformResult.exportSequence(new StreamResult("output.html"), params);
XSLT 2.0 및 XQuery 1.0 직렬화 권장사항에 따라 직렬화할 시퀀스가 속성 노드 또는 네임스페이스 노드를 포함하는 경우 직렬화 오류가 발생합니다. 직렬화해야 하는 시퀀스가 속성 또는 네임스페이스 노드를 포함하는 경우 해당 노드의 값을 문자열 또는 기타 적절한 유형으로 가져오고 대신 해당 값을 직렬화하십시오.
- 단일 항목을 직렬화하십시오.
또한 exportItem 메소드 중 하나를 사용하여 XSequenceCursor 인터페이스의 인스턴스에서 현재 항목만 직렬화할 수 있습니다. exportItem 메소드는 XItemView 인터페이스에서 상속되므로, 해당 인터페이스의 인스턴스에서 호출할 수도 있습니다.
이전에 설명한 exportSequence 메소드와 마찬가지로, exportItem 메소드에서 인수는 javax.xml.transform.Result 인터페이스의 인스턴스이며 선택적으로 XOutputParameters 인터페이스의 인스턴스이기도 합니다. exportItem 호출 효과는 현재 항목으로만 구성된 시퀀스를 포함하여 exportSequence를 호출할 때 효과와 동일합니다.
- 변환 또는 조회 결과를 직접 직렬화하십시오. 또한 애플리케이션은 XSLTExecutable.execute 메소드 또는 XQueryExecutable.execute 메소드에서 javax.xml.transform.Result 인터페이스의 인스턴스를 제공하여 직접 XQuery 표현식 또는 XSLT 변환의 결과를 직렬화할 수도 있습니다. 직렬화 매개변수 설정은 XSLT 스타일시트의 경우 해당되는 xsl:output 선언 또는 xsl:result-document 명령어의 속성으로 판별되며, XQuery 표현식의 결과의 경우 항상 기본값입니다.
XFactory factory = XFactory.newInstance(); XSLTExecutable style = factory.prepareXSLT(new StreamSource("style.xsl")); style.execute(new StreamSource("purchase.xml"), new StreamResult("output.xml"));
애플리케이션이 변환에서 XResultResolver 인터페이스의 인스턴스를 제공하는 경우 애플리케이션은 서로 다른 대상으로 각 마지막 결과 트리를 지정할 수 있습니다.
- ID 변환을 사용하십시오.
XML API를 사용하여 javax.xml.transform.Source의 인스턴스에 포함된 XML 데이터를 javax.xml.transform.Result의 인스턴스로 직접 변환할 수 있습니다. 이는 종종 ID 변환이라고도 합니다. 예제를 보려면 기본 XSLT 조작 수행의 내용을 참조하십시오.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_results_serial
파일 이름:txml_results_serial.html