XML Java
XML Java
Mark Reinhold
Core Java Platform Group
Sun Microsystems, Inc. Java Software
901 San Antonio Road
Palo Alto, CA 94303 U.S.A. 30 июля 1999
Недавно Sun Microsystems взяла на себя обеспечение базовой поддержки для XML
на платформе Java. Предлагаемые возможности включают как событийно-
ориентированный SAX-совместимый синтаксический анализатор, так и
реализацию API дерева грамматического разбора W3C DOM (Document Object
Model (Объектная модель документа)). Это первый решительный шаг, но
использование этих, довольно низкоуровневых API, требует достаточно глубокого
понимания XML.
Чтобы сделать XML доступнее для широкой аудитории разработчиков, мы
ищем способы более прямого связывания XML документов с объектами «в
памяти». Такая связь позволит писать программы, манипулирующие с XML
содержимым, на том же концептуальном уровне, что и само XML содержимое, а
не на уровне событий синтаксического анализатора или дерева грамматического
разбора. Это также устранит необходимость использования низко-уровневых API,
таких как SAX и DOM в основанных на XML системах обмена данными и
сообщениями, таким образом, упрощая создание и поддержку этих систем.
Наиболее многообещающий подход, включает компиляцию, или связывание,
XML схемы в один или более Java классов. Эти автоматически генерируемые
классы управляют преобразованием между XML документами, которые должны
следовать схеме, и взаимосвязанными экземплярами классов. Они также
гарантируют, что ограничения, описанные в схеме, сохранятся в экземплярах
обрабатываемых классов.
В этой проектной ноте обозреваются основные концепции XML и схем,
мотивируется и определяется основанное на XML связывание данных,
представляется пространный пример, и наконец очерчивается круг требований к
средствам связывания данных для платформы Java.
Связывание данных
Пример
<schema name=”ShoeOrder”>
<elementType name=”ShoeOrder”>
<attrDecl name=”id” required=”true”>
<datetypeRef name=”ID”/>
</attrDecl>
<model>
<sequence>
<elementTypeRef name=”color”/>
<elementTypeRef name=”size”/>
<elementTypeRef name=”width”/>
</sequence>
</model>
<datatype name=”Colors”>
<basetype name=”string”/>
<enumeration>
<literal>Black</literal>
<literal>Blue</literal>
<literal>Brown</literal>
<literal>Tan</literal>
<literal>White</literal>
</enumeration>
</datatype>
Определение означает, что цвет - это строка, которая может принимать одно из
следующих значений: Black, Blue, Tan или White. Затем мы можем определить тип
элемента color, на который ссылались в модели для элемента ShoeOrder:
<elementType name=”colors”>
<datatypeRef name=”Colors”/>
</elementType>
<datatype name=”Size”>
<basetype name=”string”/>
<lexicalRepresentation>
<lexical>[1-9][0-9]?(1/2)?</lexical>
</lexicalRepresentation>
<minInclusive>3 1/2<minInclusive>
<maxInclusive>13</maxInclusive>
</datatype>
<datatype name=”Width”>
<basetype name=”String”/>
<lexicalRepresentation>
<lexical>AAA|AA|[A-E]|EE|EEE<lexical>
</lexicalRepresentation>
</datatype>
<elementType name=”size”>
<datatypeRef name=”Size”/>
</elementType>
</elementType>
</schema>
XML компилятор схем может связать описанные выше схемы в класс Java со
следующей сигнатурой:
so.setColor(“Red”);
so.setSize(“5 ѕ”);
so.setWidth(“Z”);
Требования
Ссылки
Argus http://www.pmg.lcs.mit.edu/Argus.html
Сериализация объектов Java ftp://ftp.java.sun.com/docs/jdk1.2/serial-spec-JDK1.2.pdf
XML и технология Java http://java.sun.com/xml