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

ЖАНРЫ

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

Шрифт:

Теперь осталось только сохранить на диске новый XML-документ с именем, заданным в

args[2]
. В этих целях я использую объект
FileOutputStream
, и вот полный код (листинг 10.9). 

Листинг 10.9. oraclejava.java, взаимодействие процессора XSLT Oracle с Java

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;

XMLDocument xmldoc, xsldoc, newdoc;

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;

XSLStylesheet xslstylesheet = new XSLStylesheet(xsldoc, xslURL);

XSLProcessor processor = new XSLProcessor;

DocumentFragment docfragment =

processor.processXSL(xslstylesheet, xmldoc);

newdoc = new XMLDocument;

Element rootElement = newdoc.сreateElement("root");

newdoc.appendChild(rootElement);

rootElement.appendChild(docfragment);

OutputStream out = new FileOutputStream(args[2]);

newdoc.print(out);

out.close;

} catch (Exception e) {}

 }

}

На

этом
oraclejava.java
заканчивается. Чтобы скомпилировать пример, включите в
classpath
путь к разборщику XML процессора XSLT Oracle,
xmlparserv2.jar
:

C:\>set classpath=.;c:\oraclexml\lib\xmlparserv2.jar

Затем скомпилируйте

oraclejava.java
, как мы это уже делали, компилятором Java
javac
. Для выполнения XSLT-преобразований нужно указать URL документов, с которыми вы хотите работать (если документы локальны, можно указать URL файлов, как и раньше):

C:\>java oraclejavahttp://starpowder.com/planets.xsl planets.html

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

Процессор XT также может работать с Java. API XT спроектирован для работы с классами, определенными в Project X TR2 фирмы Sun, которые поддерживают обработку XML. Вам будет необходим файл

xml.jar
фирмы Sun, который можно получить, загрузив Project X TR2. Чтобы получить
xml.jar
, необходимо зарегистрироваться на web-узле разработчиков Sun,что, к счастью, бесплатно, хотя и потребует от вас заполнения изрядного количества форм.

Файл

xml.jar
нужен для класса
com.sun.xml.tree.XmlDocument
. Этот класс поддерживает XML-документы, и я
начну свой новый пример,
xtjava.java
, с создания нового объекта
XmlDocument
для исходного документа, таблицы стилей XSLT и результирующего документа:

import java.io.IOException;

import java.io.OutputStream;

import java.io.FileOutputStream;

import org.xml.sax.SAXException;

import com.sun.xml.tree.XmlDocument;

import com.jclark.xsl.dom.Transform;

import com.jclark.xsl.dom.TransformEngine;

import com.jclark.xsl.dom.TransformException;

import com.jclark.xsl.dom.XSLTransformEngine;

class xtjava {

 public static void main(String[] args)

throws IOException. SAXException, TransformException {

XmlDocument XMLdoc =

new XmlDocument.createXmlDocument(args[0]);

XmlDocument XSLdoc =

new XmlDocument.createXmlDocument(args[1]);

XmlDocument newdoc = new XmlDocument;

.

.

.

После этого я создаю объект

XSLTranformationEngine
и вызываю его метод
createTransform
для создания нового объекта
Transform
на основе таблицы стилей
XSLT
:

import java.io.IOException;

.

.

.

class xtjava {

 public static void main(String[] args)

throws IOException, SAXException, TransformException {

XmlDocument doc = new XmlDocument;

XSLTransformEngine transformEngine = new XSLTransformEngine;

Transform transform = transformEngine.createTransform(XSLdoc);

.

.

.

Затем я могу преобразовать XML-документ в объект результирующего документа следующим способом:

import java.io.IOException;

.

.

.

class xtjava {

 public static void main(String[] args)

throws IOException, SAXException, TransformException {

XmlDocument XMLdoc =

new XmlDocument.createXmlDocument(args[0]);

XmlDocument XSLdoc =

new XmlDocument.createXmlDocument(args[1]);

XmlDocument newdoc = new XmlDocument;

XSLTransformEngine transformEngine = new XSLTransformEngine;

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