Чтение онлайн

ЖАНРЫ

Холзнер Стивен

Шрифт:

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.stream.StreamSource;

import javax.xml.transform.stream.StreamResult;

import javax.xml.transform.TransformerException;

import javax.xml.transform.TransformerConfigurationException;

import java.io.FileOutputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

public class saxonjava {

 public static void main(String[] args)

throws TransformerException, TransformerConfigurationException,

FileNotFoundException, IOException {

TransformerFactory tFactory = TransformerFactory.newInstance;

Transformer transformer =

tFactory.newTransformer(new StreamSource(args[1]));

transformer transform(new StreamSource(args[0]),

new StreamResult(new FileOutputStream(args[2])));

 }

}

Взаимодействие

процессора XSLT Oracle с Java

Несколько больше усилий потребуется для осуществления XSLT-преобразования при помощи API процессора XSLT фирмы Oracle. Новый пример,

oraclejava.java
, продемонстрирует работу с этим API.

В

oraclejava.java
в первую очередь необходимо считывать требуемые документы при помощи объекта
DOMParser
:

import org.w3c.dom.*;

import java.util.*;

import java.io.*;

import java.net.*;

import oracle.xml.parser.v2.*;

public class oraclejava {

 public static void main (String args[]) throws Exception {

DOMParser parser;

try {

parser = new DOMParser;

parser.setPreserveWhitespace(true);

.

.

.

Затем, чтобы считать исходный документ XML и документ таблицы стилей XSLT, нужно преобразовать их URL в объекты

URLJava
при помощи метода
parse
объекта
parser
. После этого я вызываю метод разборщика
getDocument
, для того чтобы извлечь и сохранить документы XML и XSLT в объектах
XMLDocument
:

public class oraclejava {

 public static void main (String args[]) throws Exception {

DOMParser parser;

XMLDocument xmldoc, xsldoc;

URL xslURL;

URL xmlURL;

try {

parser = new DOMParser;

parser.setPreserveWhitespace(true);

xmlURL = new URL(args[0]);

parser.parse(xmlURL);

xmldoc = parser.getDocument;

xslURL = new URL(args[1]);

parser.parse(xslURL);

xsldoc = parser.getDocument;

.

.

.

В

этот момент
planets.xml
и
planets.xsl
заключены в объекты
XMLDocument
. Для выполнения преобразования мне необходимы еще объекты
XSLStylesheet
и
XSLProcessor
для таблицы стилей XSLT. Фактическое преобразование XSLT осуществляется методом
processXSL
объекта
parser
, возвращающего фрагмент документа:

public class oraclejava {

 public static void main (String args[]) throws Exception {

DOMParser parser;

.

.

.

xslURL = new URL(args[1]);

parser.parse(xslURL);

xsldoc = parser.getDocument;

XSLStylesheet xslstylesheet = new XSLStylesheet(xsldoc, xslURL);

XSLProcessor processor = new XSLProcessor;

DocumentFragment docfragment =

processor.processXSL(xslstylesheet, xmldoc);

.

.

.

Этот код завершает преобразование. Теперь задача состоит в том, чтобы преобразовать данный фрагмент документа в документ XML, который можно записать на диск, — для чего я и создам новый XML-документ,

newdoc
, и вставлю фрагмент документа в корень нового документа:

import org.w3c.dom.*;

.

.

.

public class oraclejava {

 public static void main (String args[]) throws Exception {

DOMParser parser;

XMLDocument xmldoc, xsldoc, newdoc;

URL xslURL;

URL xmlURL;

try {

.

.

.

DocumentFragment docfragment =

processor processXSL(xslstylesheet, xmldoc);

newdoc = new XMLDocument;

Element rootElement = newdoc.createElement("root");

newdoc.appendChild(rootElement);

rootElement.appendChild(docfragment);

.

.

.

Поделиться с друзьями: