Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
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);
.
.
.
Теперь осталось только сохранить на диске новый XML-документ с именем, заданным в args[2]
. В этих целях я использую объект FileOutputStream
, и вот полный код (листинг 10.9).
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 oraclejava http://starpowder.com/planets.xml http://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, 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).
Интервал:
Закладка: