xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Virtual XML Garden


Автор Сообщение
Xacid
Новичок

Зарегистрирован: 28.04.2002
Сообщения: 38
Откуда: Киев, Украина
[9268] Ср Мар 15, 2006 23:04
Virtual XML Garden
http://www.alphaworks.ibm.com/tech/virtualxml

Virtual XML Garden

An implementation of XML processing directly and efficiently over arbitrary, structured data.

What is Virtual XML Garden?

With Virtual XML Garden, users can write scripts in XPath (as well as a subset of the forthcoming XQuery language) that mix and match virtual XML views on a number of provided data sources, including XML access to ZIP archives, the file system, binary formatted data, and hierarchical (Information Management System (IMS)) databases.

More and more structured data is converted into XML documents, either for transmission and processing that follow various standards such as the Web service standards, or for combination with "semi-structured" document data in XHTML and similar formats. Sometimes the original structured data is converted in its original position; sometimes it is converted "on the fly." Both approaches pose problems: If the original data is converted, then legacy applications depending on the old format must be rewritten. Converting data on the fly, on the other hand, imposes a significant performance penalty because the standard XML format requires significant overhead for generating or parsing XML character sequences.

Virtual XML solves this problem by not converting data but rather by

* keeping everything in the native format most natural for the data
* writing thin, on-demand adapters for each format into a generic abstract XML interface corresponding to the XML Infoset as well as the forthcoming XPath and XQuery Data Model.

This solution is combined with implementations of the XPath XML processing language (and subsets of the forthcoming XPath 2.0 and XQuery languages) written to exploit the specific data access patterns allowed by the actual structured data underneath the Virtual XML adaptation layer through the use of data model profiles.

How does it work?
Virtual XML Garden comes with a number of prototype adapters as well as the means of writing new ones. Included adapters allow XML access and processing of the following types of data:

* ZIP archives: The virtual XML structure contains all archive members and their metadata.
* Formatted binary and text files that can be described using a subset of the forthcoming Data Format Description Language (DFDL) standard: The virtual XML structure is described by an XML Schema with annotations defining the relationship to the formatted data.
* Entire file systems: The virtual XML contains the individual files and retains the directory structure.
* Information Management System (IMS) hierarchical databases.
* Relational databases (through a java.sql connector).
* Adapters for encoding/decoding byte streams as XML character strings, etc.

Each adapter is exposed as an XPath or XQuery function, which means that it can be used from within all the supported XML processing languages. Virtual XML Garden supports these XML processing languages:

* XPath 1.0 (actually XPath 2.0 in "backwards compatibility mode").
* Partial support for XPath 2.0.
* Partial support for XQuery 1.0.

Instructions for navigating the documentation and examples can be found in the index.html file.
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[9299] Сб Мар 25, 2006 08:13

Спасибо за ссылку. Наконец-то будет что-то существенное для секции "Related Work" в моих статьях. Добавил в мой research wiki.

Авторы Virtual XML Garden дальше прототипа не пошли (или скрывают всю правду). Иначе бы они попали на следующие проблемы:

1. Для того, чтобы представить в виде XML те деревья, которые используются в программах, надо писать много кода. В результате, это выгодно только для малого класса приложений. Я пока придумал только два из них: текстовые процессоры и компиляторы с интерпретаторами.

2. Есть такая проблема, как синхронизация. Допустим, у нас есть данные, которые отображены на дерево. Что случится, если данные или дерево изменятся?

3. Состыковка. На примере файловой системы. Некий код начинает обход фс с корня, спускаясь вниз. Параллельно, он же идёт от некого файла вверх. (Зачем? Допустим, для вычисления XPath-выражения "ancestor::*=/usr/bin".) В какой-то момент они должны встретиться. Библиотека виртуального XML должна быть достаточно умной, чтобы виртуальный XML-узел не раздвоился. Чтобы усугубить ситуацию, можно предположить, что часть директорий посерёдке недоступна для чтения.
Xacid
Новичок

Зарегистрирован: 28.04.2002
Сообщения: 38
Откуда: Киев, Украина
[9411] Вт Мар 28, 2006 17:51

[quote="olpa"]
1. Для того, чтобы представить в виде XML те деревья, которые используются в программах, надо писать много кода. В результате, это выгодно только для малого класса приложений. Я пока придумал только два из них: текстовые процессоры и компиляторы с интерпретаторами.
[/quote]

имхо базы данных ( вообще - любые, и в частности - реляционные) достаточно хорошо накладываются на xml-деревья.

[quote="olpa"]
2. Есть такая проблема, как синхронизация. Допустим, у нас есть данные, которые отображены на дерево. Что случится, если данные или дерево изменятся?
[/quote]

имхо нужно просто не абсолютировать) дерево здесь не может быть некоей самостоятельной сущностью отдельной от своего источника. поэтому нет необходимости "менять дерево". более того - каким образом предполагается его менять? разве оно где нибудь присутсвует? оно было получено, обработано и отброшено. в лучшем случае оно могло быть закешировано - но корректный механизм кешировани должен проверять актуальность содержимого кэша (это общий подход к кешированию, безотносительно к данному случаю).

[quote="olpa"]
3. Состыковка. На примере файловой системы. Некий код начинает обход фс с корня, спускаясь вниз. Параллельно, он же идёт от некого файла вверх. (Зачем? Допустим, для вычисления XPath-выражения "ancestor::*=/usr/bin".) В какой-то момент они должны встретиться. Библиотека виртуального XML должна быть достаточно умной, чтобы виртуальный XML-узел не раздвоился. Чтобы усугубить ситуацию, можно предположить, что часть директорий посерёдке недоступна для чтения.[/quote]

опять таки - это абсолютизм с Вашей стороны, имхо) имхо, виртуальный xml - это всего лишь сериализация некоторых внешних, не-xml данных в виде sax-событий. и не более того. правила по которым эта сериализация происходит - вопрос достаточно контекстно-зависимый, и, имхо, исключительно прагматический. важны именно ядро и интерфейс инфраструктуры в которую эти события будут направлены. а модель сериализации всегда может быть отдельно адаптированна к каждой конкретной среде и задаче.