Взаимодействие процессора XSLT Oracle с Java
Взаимодействие процессора 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);
.
.
.
Теперь осталось только сохранить на диске новый 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:oraclexmllibxmlparserv2.jar
Затем скомпилируйте oraclejava.java, как мы это уже делали, компилятором Java javac. Для выполнения XSLT-преобразований нужно указать URL документов, с которыми вы хотите работать (если документы локальны, можно указать URL файлов, как и раньше):
C:>java oraclejava http://starpowder.com/planets.xml http://starpowder.com/planets.xsl planets.html
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Использование процессора XSLT на Java
Использование процессора XSLT на Java Для работы с основанным на Java процессором XSLT достаточно загрузить и распаковать (unzip) его — и он готов к работе. Прочитайте, конечно, сопроводительные указания; но, как правило, нужно осуществить только два шага.Во-первых, необходимо
Oracle XSLT
Oracle XSLT Корпорация Oracle также предоставляет бесплатный процессор XSLT, который можно загрузить с http://technet.oracle.com/tech/xml/, — правда, для этого придется пройти весьма длительную процедуру регистрации. Ко времени написания книги для загрузки процессора XSLT достаточно было щелкнуть
Вызов Java непосредственно из процессоров XSLT
Вызов Java непосредственно из процессоров XSLT Как мы говорили в главе 5, до недавнего времени процессоры XSLT могли реализовывать функции расширения любым способом, и один из этих способов включал прямой вызов функций Java. Например, в Saxon и Xalan можно выполнять код Java, если
Работа с API XSLT для Java
Работа с API XSLT для Java Во всех основанных на Java процессорах XSLT определен объемный интерфейс, API, для связи с Java. Как правило, при помощи API вызываются методы и создаются объекты Java, как мы увидим в этой главе. Но все процессоры XSLT определяют свои API по-разному, и обычно эти API
Взаимодействие Xalan с Java
Взаимодействие Xalan с Java Несмотря на свой размер, Xalan — один из простейших процессоров XSLT для взаимодействия с Java. В качестве примера я создал новый класс Java, xalanjava, и для осуществления XSLT-преобразования к нему положено обращаться следующим образом:C:>java xalanjava planets.xml planets.xsl
Взаимодействие Saxon с Java
Взаимодействие Saxon с Java Процессор Saxon также определяет API для работы с Java, но, конечно, в деталях этот прикладной интерфейс отличается от API Xalan. Для демонстрации создания преобразований при помощи Saxon API версии 6.0.2 я создам новый класс Java saxonjava. Начать нужно с создания нового
Взаимодействие XT с Java
Взаимодействие XT с Java Процессор XT также может работать с Java. API XT спроектирован для работы с классами, определенными в Project X TR2 фирмы Sun, которые поддерживают обработку XML. Вам будет необходим файл xml.jar фирмы Sun, который можно получить, загрузив Project X TR2. Чтобы получить xml.jar,
Применение XSLT с Java Server Pages
Применение XSLT с Java Server Pages Для работы с активными серверными страницами я использовал процессор MSXML фирмы Microsoft, но серверные страницы Java (Java Server Pages, JSP) не обязаны выполняться на серверах на платформе Windows, поэтому с JSP я не использую MSXML. Для выполнения XSLT-преобразования и
Применение XSLT с сервлетами Java
Применение XSLT с сервлетами Java Выполнять XSLT-преобразования на сервере можно также при помощи сервлетов (servlet) Java. Хотя многие процессоры XSLT предоставляют свои собственные версии сервлетов, я считаю, что гораздо проще самостоятельно выполнить преобразование при помощи Xalan
Java, Java везде и всюду
Java, Java везде и всюду Язык Java был разработан фирмой Sun Microsystems, Inc. Первоначально он предназначался для прикладного ПО бытовых электронных приборов, но скоро стал использоваться для приложений, выполнявшихся браузерами. В конце 1995 года Sun сделала Java доступной, разрешив
Выполнение XSLT-преобразований в Java
Выполнение XSLT-преобразований в Java Язык Java традиционно широко поддерживает XML-технологии: большинство передовых разработок в этой области реализуется, как правило, сначала на Java и уж затем переносится на другие платформы разработки.Не стал исключением и XSLT. Можно смело
Библиотека Oracle XDK
Библиотека Oracle XDK Основные характеристики.? Платформы: Java, C/C++, PL/SQL.? Расширения: поддержка функций расширения.? Полнота реализации: сравнительно хорошая (уступает Saxon и MSXML).? Разработчик: Oracle Corporation.? URL: http://technet.oracle.com/tech/xml/.Так же как и MSXML, Oracle XDK (от англ. XML Development Kit -
На злобу дня, или Oracle vs Red Hat
На злобу дня, или Oracle vs Red Hat LinuxFormat, #85 (ноябрь 2006)Нынче все сообщество Open Source всколыхнула новость о том, что Oracle будет выпускать свой Linux, предназначенный для запуска своей же СУБД. И не просто свой дистрибутив – а Red Hat цельнотянутый, освобожденный от «ненужных» компонентов,
Linux от Oracle
Linux от Oracle LinuxFormat, #142 (март 2011)Пару лет назад мир свободного софта в очередной раз содрогнулся: компания Oracle объявила о выпуске собственного дистрибутива Linux – на базе не кого-нибудь, а текущей версии RHEL. Начались прорицания под стать Дельфийскому оракулу: либо Oracle съест Red