Книга: XSLT

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

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

Процессор XT также может работать с Java. API XT спроектирован для работы с классами, определенными в Project X TR2 фирмы Sun, которые поддерживают обработку XML. Вам будет необходим файл xml.jar фирмы Sun, который можно получить, загрузив Project X TR2. Чтобы получить xml.jar, необходимо зарегистрироваться на web-узле разработчиков Sun, http://developer.java.sun.com, что, к счастью, бесплатно, хотя и потребует от вас заполнения изрядного количества форм.

Файл 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();
  Transform transform = transformEngine.createTransform(XSLdoc);
  transform transform(XMLdoc, newdoc);
  .
  .
  .

Так завершается преобразование. Осталось только записать результирующий документ, newdoc, на диск, что можно сделать при помощи объекта FileOutputStream (листинг 10.10).

Листинг 10.10. xtjava.java, взаимодействие XT с Java

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.Transform Engine;
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();
  XSLTransformEngine transformEngine = new XSLTransformEngine();
  Transform transform = transformEngine.createTransform(XSLdoc);
  transform.transform(XMLdoc, newdoc);
  OutputStream out = new FileOutputStream(args[2]);
  newdoc.write(out);
  out.close();
 }
}

Чтобы запустить пример, включите xt.jar и xml.jar в classpath:

C:>set classpath=.;d:xtxt.jar;xml.jar

Скомпилируйте теперь xtjava.java компилятором Java javac и запустите на выполнение следующим образом, передав URL документов XML и XSL (можно передать и URL файлов, как было показано ранее):

C:>java xtjava http://www.starpowder.com/planets.xml http://www.starpowder.com/planets.xsl planets.html

Теперь все сделано.

Оглавление книги


Генерация: 0.047. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз