Spec-Zone .ru
спецификации, руководства, описания, API
|
Следующий раздел описывает несколько примеров, которые основываются на понятиях, демонстрируемых в Основных примерах.
Цель этого раздела состоит в том, чтобы иллюстрировать, как настроить привязку JAXB, используя пользовательские обязательные объявления, сделанные одним из следующих двух способов:
В отличие от примеров в Основных Примерах JAXB, которые сосредотачиваются на коде Java в соответствующем Main.java файлы class, примеры здесь сосредотачиваются на настройках, сделанных к XML-схеме прежде, чем генерировать полученный из схемы Java обязательные классы.
Этот раздел представляет настройки, которые могут быть сделаны к привязке JAXB и методам проверки допустимости. Для получения дополнительной информации см. Спецификацию JAXB.
В большинстве случаев привязка значения по умолчанию, сгенерированная JAXB обязательный компилятор, достаточна. Есть случаи, однако, в котором Вы могли бы хотеть изменить привязку значения по умолчанию. Некоторые из них включают:
Этот раздел объясняет некоторые базовые понятия настройки JAXB:
Настройки к значению по умолчанию привязка JAXB делаются в форме обязательных объявлений, которые передают к JAXB обязательным компилятором. Эти обязательные объявления могут быть сделаны любым из двух способов:
Для некоторых использование встроенных настроек легче, потому что можно видеть свои настройки в контексте схемы, к которой они применяются. Наоборот, использование внешнего обязательного файла настройки позволяет Вам настроить привязку JAXB, не изменяя исходную схему, и позволяет Вам легко применить настройки к нескольким файлам схемы сразу.
Каждый из этих типов настройки описывается более подробно в следующих разделах:
Настройки к привязке JAXB, сделанной посредством встроенных обязательных объявлений в файле XML-схемы, принимают форму элементов <xsd:appinfo>, встроенных в схему элементы <xsd:annotation> (xsd: является префиксом пространства имен XML-схемы, как определено в Части 1 XML-схемы W3C: Структуры). Общую форму для встроенных настроек показывают в следующем примере:
<xs:annotation> <xs:appinfo> <!-- ... binding declarations . ... --> </xs:appinfo> </xs:annotation>
Настройки применяются в расположении, в котором они объявляются в схеме. Например, объявление на уровне определенного элемента применяется к тому элементу только. Отметьте, что префикс пространства имен XML-схемы должен использоваться с <annotation> и тегами объявления <appinfo>. В предыдущем примере xs: используется в качестве префикса пространства имен, таким образом, объявлениями является теговый <xs:annotation> и <xs:appinfo>.
Настройки к привязке JAXB, сделанной при использовании внешнего файла, содержащего обязательные объявления, примите общую форму, показанную в следующем примере:
<jxb:bindings schemaLocation = "xs:anyURI"> <jxb:bindings node = "xs:string">* <!-- binding declaration --> <jxb:bindings> </jxb:bindings>
Например, первый schemaLocation/node объявление в JAXB обязательный файл объявлений определяет имя схемы и корневой узел схемы:
<jxb:bindings schemaLocation="po.xsd" node="/xs:schema"> </jxb:bindings>
Последующий schemaLocation/node объявление, такое как элемент simpleType под названием ZipCodeType в предыдущем примере схемы, принимает следующую форму:
<jxb:bindings node="//xs:simpleType [@name=’ZipCodeType’]">
Обязательные файлы настройки должны быть в тексте ASCII. Имя или расширение не имеют значения; хотя типичным расширением, используемым в этой главе, является .xjb.
Файлы настройки, содержащие обязательные объявления, передают к JAXB Обязательный компилятор, xjc, используя следующий синтаксис:
xjc -b file schema
где файл является именем обязательного файла настройки, и схема является именем схем, которые Вы хотите передать к обязательному компилятору.
У Вас может быть единственный обязательный файл, который содержит настройки для многократных схем, или Вы можете seperate настройки в многократные файлы привязки; например:
xjc schema1.xsd schema2.xsd schema3.xsd \ -b bindings123.xjb xjc schema1.xsd schema2.xsd schema3.xsd \ -b bindings1.xjb \ -b bindings2.xjb \ -b bindings3.xjb
Отметьте, что упорядочивание файлов схемы и обязательных файлов на командной строке не имеет значения; хотя каждому обязательному файлу настройки должен предшествовать его собственный -b, включают командную строку.
Для получения дополнительной информации об опциях компилятора xjc вообще, см.
Есть несколько правил, которые применяются к обязательным объявлениям, сделанным во внешнем обязательном файле настройки, которые не применяются к подобным объявлениям, сделанным встроенными в исходной схеме:
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
Точно так же отдельные узлы в пределах схемы, к которой должны быть применены настройки, должны быть определены, используя нотацию XPath; например:
<jxb:bindings node="//xs:complexType [@name=’USAddress’]">
В таких случаях настройка применяется к узлу обязательным компилятором, как будто объявление было встроено встроенное в элементе <xs:appinfo> узла.
Чтобы суммировать эти правила, внешний обязательный элемент, <jxb:bindings> только распознается за то, что он обработал JAXB обязательный компилятор в трех случаях:
Значение по умолчанию привязка JAXB может быть настроено или переопределено на четырех разных уровнях, или контекстах.
Следующее число иллюстрирует наследование и приоритет объявлений настройки. Определенно, объявления к вершине пирамиды наследовали и заменяют объявления ниже их.
Компонентные объявления наследовались от и заменяют объявления Определения; объявления Определения наследовали и заменяют объявления Схемы; и объявления Схемы наследовали и заменяют Глобальные объявления.
Иллюстрация: Наследование Контекста Настройки и Приоритет
Синтаксис для четырех типов JAXB обязательные объявления, синтаксис для типа данных XML к Java обязательные объявления, и префикс пространства имен настройки описывается в следующем разделе.
Настройки глобальной области видимости объявляются с <globalBindings>. Синтаксис для настроек глобальной области видимости следующие:
<globalBindings> [ collectionType = "collectionType" ] [ fixedAttributeAsConstantProperty = "true" | "false" | "1" | "0" ] [ generateIsSetMethod = "true" | "false" | "1" | "0" ] [ enableFailFastCheck = "true" | "false" | "1" | "0" ] [ choiceContentProperty = "true" | "false" | "1" | "0" ] [ underscoreBinding = "asWordSeparator" | "asCharInWord" ] [ typesafeEnumBase = "typesafeEnumBase" ] [ typesafeEnumMemberName = "generateName" | "generateError" ] [ enableJavaNamingConventions = "true" | "false" | "1" | "0" ] [ bindingStyle = "elementBinding" | "modelGroupBinding" ] [ <javaType> ... </javaType> ]* </globalBindings>
Объявления <globalBindings> только допустимы в элементе annotation верхнего уровня элемент schema. Может только быть единственный экземпляр объявления <globalBindings> в любой данной схеме или обязательном файле объявлений. Если одна исходная схема включает или импортирует вторую исходную схему, объявление <globalBindings> должно быть объявлено в первой исходной схеме.
Настройки контекста схемы объявляются с <schemaBindings>. Синтаксис для настроек контекста схемы:
<schemaBindings> [ <package> package </package> ] [ <nameXmlTransform> ... </nameXmlTransform> ]* </schemaBindings> <package [ name = "packageName" ] [ <javadoc> ... </javadoc> ] </package> <nameXmlTransform> [ <typeName [ suffix="suffix" ] [ prefix="prefix" ] /> ] [ <elementName [ suffix="suffix" ] [ prefix="prefix" ] /> ] [ <modelGroupName [ suffix="suffix" ] [ prefix="prefix" ] /> ] [ <anonymousTypeName [ suffix="suffix" ] [ prefix="prefix" ] /> ] </nameXmlTransform>
Как показано выше, объявления <schemaBinding> включают два субкомпонента:
<class> обязательное объявление позволяет Вам настроить привязку элемента схемы к интерфейсу контента Java или Java интерфейс Element. объявления <class> могут использоваться, чтобы настроить:
Синтаксис для настроек <class>:
<class [ name = "className"] [ implClass= "implClass" ] > [ <javadoc> ... </javadoc> ] </class>
<property> обязательное объявление позволяет Вам настроить привязку элемента XML-схемы к его представлению Java как свойство. Контекст настройки может или быть на уровне определения или компонентном уровне в зависимости от того, где <property> обязательное объявление определяется.
Синтаксис для настроек <property>:
<property [ name = "propertyName"] [ collectionType = "propertyCollectionType" ] [ fixedAttributeAsConstantProperty = "true" | "false" | "1" | "0" ] [ generateIsSetMethod = "true" | "false" | "1" | "0" ] [ enableFailFastCheck ="true" | "false" | "1" | "0" ] [ <baseType> ... </baseType> ] [ <javadoc> ... </javadoc> ] </property> <baseType> <javaType> ... </javaType> </baseType>
Объявление <javaType> обеспечивает способ настроить преобразование типов данных XML к и от типов данных Java. XML обеспечивает больше типов данных чем Java, таким образом, объявление <javaType> позволяет Вам определить пользовательскую привязку типа данных, когда значение по умолчанию привязка JAXB не может достаточно представить Вашу схему.
Целевой тип данных Java может быть Java встроенный тип данных или специализированный тип данных Java. Если специализированный тип данных Java используется в качестве цели, Ваша реализация должна также обеспечить синтаксический анализ и методы печати для немаршалинга и маршалинга данных. С этой целью спецификация JAXB поддерживает parseMethod и printMethod:
Если Вы предпочитаете определять свои собственные преобразования типа данных, JAXB определяет статический class, DatatypeConverter, чтобы помочь в парсинге и печати допустимых лексических представлений XML-схемы встроенным типам данных.
Синтаксис для настройки <javaType>:
<javaType name= "javaType" [ xmlType= "xmlType" ] [ hasNsContext = "true" | "false" ] [ parseMethod= "parseMethod" ] [ printMethod= "printMethod" ]>
Объявление <javaType> может использоваться в:
См. Класс MyDatatypeConverter для примера того, как объявления <javaType> и интерфейс DatatypeConverterInterface реализуются в пользовательском преобразователе типа данных class.
Безопасные с точки зрения типов объявления перечисления обеспечивают локализованный способ отобразить XML элементы simpleType на Java классы typesafe enum. Есть два типа безопасных с точки зрения типов объявлений перечисления, которые можно сделать:
В обоих случаях есть два основных ограничения на этот тип настройки:
Синтаксис для настройки <typesafeEnumClass>:
<typesafeEnumClass [ name = "enumClassName" ] [ <typesafeEnumMember> ... </typesafeEnumMember> ]* [ <javadoc> enumClassJavadoc </javadoc> ] </typesafeEnumClass>
Синтаксис для настройки <typesafeEnumMember>:
<typesafeEnumMember name = "enumMemberName"> [ value = "enumMemberValue" ] [ <javadoc> enumMemberJavadoc </javadoc> ] </typesafeEnumMember>
Для встроенных аннотаций объявление <typesafeEnumClass> должно быть определено в элементе аннотации элемента <simpleType>. <typesafeEnumMember> должен быть определен в элементе аннотации элемента перечисления. Это позволяет элементу перечисления быть настроенным независимо от перечисления class.
Объявление <javadoc> позволяет Вам добавлять пользовательские аннотации инструмента Javadoc к полученным из схемы пакетам JAXB, классам, интерфейсам, методам, и полям. Отметьте, что объявления <javadoc> не могут быть применены глобально; они только допустимы как подэлементы других обязательных настроек.
Синтаксис для настройки <javadoc>:
<javadoc> Contents in <b>Javadoc<\b> format. </javadoc>
или
<javadoc> <<![CDATA[Contents in <b>Javadoc<\b> format ]]> </javadoc>
Отметьте, что строки документации в объявлениях <javadoc>, примененных на уровне пакета, должны содержать <body> открытые и близкие теги; например:
<jxb:package name="primer.myPo"> <jxb:javadoc> <![CDATA[<body> Package level documentation for generated package primer.myPo. </body>]]> </jxb:javadoc> </jxb:package>
Обязательным объявлениям всего стандартного JAXB должен предшествовать префикс пространства имен, который отображается на URI пространства имен JAXB http://java.sun.com/xml/ns/jaxb. Например, в этой выборке, jxb: используется. С этой целью любая схема, Вы хотите настроить со стандартным JAXB обязательные объявления, должна включать объявление пространства имен JAXB и номер версии JAXB наверху файла схемы. Например, в po.xsd для Настраивания Встроенного примера, объявление пространства имен следующие:
<xsd:schema xmlns:xsd= "http://www.w3.org/2001/XMLSchema" xmlns:jxb= "http://java.sun.com/xml/ns/jaxb" jxb:version="1.0">
Обязательное объявление с префиксом пространства имен jxb принимает следующую форму:
<xsd:annotation> <xsd:appinfo> <jxb:globalBindings binding declarations /> <jxb:schemaBindings> ... binding declarations . ... </jxb:schemaBindings> </xsd:appinfo> </xsd:annotation>
Отметьте, что в этом примере, globalBindings и объявления schemaBindings используются, чтобы определить, соответственно, глобальную область видимости и настройки контекста схемы. Эти контексты настройки описываются более подробно в Контексте, Наследовании, и Приоритете.
Настраивание Встроенного примера иллюстрирует некоторые основные настройки, сделанные посредством встроенных аннотаций к XML-схеме под названием po.xsd. Кроме того, этот пример реализует пользовательский преобразователь типа данных class, MyDatatypeConverter.java, который иллюстрирует печать и методы синтаксического анализа в настройке <javaType> для того, чтобы обработать пользовательские преобразования типа данных.
Суммировать этот пример:
Чтобы скомпилировать и выполнить Настраивание Встроенного примера, используя Муравья, в окне терминала, идут в jaxb-ri-install/samples/inline-customize/ каталог и вводят следующее:
ant
Ключевые настройки в этой выборке и пользовательском MyDatatypeConverter.java class описываются более подробно в следующем разделе.
Специализированная схема, используемая в Настраивании Встроенного примера, находится в файле jaxb-ri-install/samples/inline-customize/po.xsd. Настройки находятся в тегах <xsd:annotation>.
Следующий пример кода показывает объявления globalBindings в po.xsd:
<jxb:globalBindings fixedAttributeAsConstantProperty="true" collectionType="java.util.Vector" typesafeEnumBase="xsd:NCName" choiceContentProperty="false" typesafeEnumMemberName="generateError" bindingStyle="elementBinding" enableFailFastCheck="false" generateIsSetMethod="false" underscoreBinding="asCharInWord"/>
В этом примере все значения устанавливаются в значения по умолчанию за исключением collectionType.
Следующий код показывает схеме обязательные объявления в po.xsd:
<jxb:schemaBindings> <jxb:package name="primer.myPo"> <jxb:javadoc> <![CDATA[<body> Package level documentation for generated package primer.myPo. </body>]]> </jxb:javadoc> </jxb:package> <jxb:nameXmlTransform> <jxb:elementName suffix="Element"/> </jxb:nameXmlTransform> </jxb:schemaBindings>
Следующий код показывает class обязательные объявления в po.xsd:
<xsd:complexType name="PurchaseOrderType"> <xsd:annotation> <xsd:appinfo> <jxb:class name="POType"> <jxb:javadoc> A <b>Purchase Order</b> consists of addresses and items. </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation> <!-- ... --> </xsd:complexType>
Аннотации инструмента Javadoc для полученного из схемы POType, class будет содержать описание "A <b>Purchase Order</b> consists of addresses and items." <, используются, чтобы выйти из вводной скобки на HTML-тэгах <b>.
Позже в po.xsd, другая настройка <javadoc> объявляется на этом уровне class, но на сей раз строки HTML оставляют с CDATA:
<xsd:annotation> <xsd:appinfo> <jxb:class> <jxb:javadoc> <![CDATA[ First line of documentation for a <b>USAddress</b>.]]> </jxb:javadoc> </jxb:class> </xsd:appinfo> </xsd:annotation>
Особенно интересный вот настройка generateIsSetMethod, которая заставляет два дополнительных метода свойства, isSetQuantity и unsetQuantity, быть сгенерированными. Эти методы позволяют клиентскому приложению различить значения по умолчанию схемы и значения, происходящие явно в пределах документа экземпляра.
Например, в po.xsd:
<xsd:complexType name="Items"> <xsd:sequence> <xsd:element name="item" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity" default="10"> <xsd:annotation> <xsd:appinfo> <jxb:property generateIsSetMethod="true"/> </xsd:appinfo> </xsd:annotation> <!-- ... --> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType>
@generateIsSetMethod применяется к элементу quantity, который связывается со свойством в пределах интерфейса Items.ItemType. методы unsetQuantity И isSetQuantity сгенерированы в интерфейсе Items.ItemType.
class jaxb-ri-install/samples/inline-customize/src/inlinecustomize/primer/MyDatatypeConverter, показанный в следующем примере, обеспечивает способ настроить преобразование типов данных XML к и от типов данных Java, используя настройку <javaType>.
package primer; import java.math.BigInteger; import javax.xml.bind.DatatypeConverter; public class MyDatatypeConverter { public static short parseIntegerToShort(String value) { BigInteger result = DatatypeConverter.parseInteger(value); return (short)(result.intValue()); } public static String printShortToInteger(short value) { BigInteger result = BigInteger.valueOf(value); return DatatypeConverter.printInteger(result); } public static int parseIntegerToInt(String value) { BigInteger result = DatatypeConverter.parseInteger(value); return result.intValue(); } public static String printIntToInteger(int value) { BigInteger result = BigInteger.valueOf(value); return DatatypeConverter.printInteger(result); } };
Следующий код показывает, как на MyDatatypeConverter class ссылаются в объявлении <javaType> в po.xsd:
<xsd:simpleType name="ZipCodeType"> <xsd:annotation> <xsd:appinfo> <jxb:javaType name="int" parseMethod="primer.MyDatatypeConverter.parseIntegerToInt" printMethod="primer.MyDatatypeConverter.printIntTo Integer" /> </xsd:appinfo> </xsd:annotation> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="10000"/> <xsd:maxInclusive value="99999"/> </xsd:restriction> </xsd:simpleType>
В этом примере jxb:javaType обязательное объявление переопределяет значение по умолчанию привязка JAXB этого типа к java.math.BigInteger. В целях Настраивания Встроенного примера ограничения на ZipCodeType (определенно, что допустимые почтовые индексы Соединенных Штатов ограничиваются пятью цифрами) позволяют, что все допустимые значения могут соответствовать в пределах Java примитивному типу данных int. Отметьте также, что, потому что <jxb:javaType name="int"/> объявляется в пределах ZipCodeType, настройка применяется ко всем свойствам JAXB, которые ссылаются на это определение simpleType, включая методы getZip И setZip.
Пример Преобразователя DataType подобен Настраиванию Встроенного примера. Как с Настраиванием Встроенного примера, настройки в примере Преобразователя Типа данных делаются при использовании встроенных обязательных объявлений в XML-схеме для приложения, po.xsd.
Глобальная переменная, схема, и пакет, и большинство настроек class для Настраивания Встроенного и примеры Преобразователя DataType идентичны. То, где пример Преобразователя Типа данных отличается от Настраивания Встроенного примера, находится в parseMethod и printMethod, используемом для того, чтобы преобразовать данные XML в Java тип данных int.
Определенно, вместо того, чтобы использовать методы в пользовательском MyDataTypeConverter class, чтобы выполнить эти преобразования типа данных, пример Преобразователя Типа данных использует встроенные методы, обеспеченные javax.xml.bind.DatatypeConverter:
<xsd:simpleType name="ZipCodeType"> <xsd:annotation> <xsd:appinfo> <jxb:javaType name="int" parseMethod="javax.xml.bind.DatatypeConverter.parseInt" printMethod="javax.xml.bind.DatatypeConverter.printInt"/> </xsd:appinfo> </xsd:annotation> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="10000"/> <xsd:maxInclusive value="99999"/> </xsd:restriction> </xsd:simpleType>
Чтобы скомпилировать и выполнить пример Преобразователя DataType, используя Муравья, в окне терминала, идут в jaxb-ri-install/samples/datatypeconverter/ каталог и вводят следующее:
ant
Следующие разделы предоставляют информацию об обязательных файлах объявления:
Весь JAXB обязательные файлы объявления должен начаться:
Версия, пространство имен, и объявления схемы в bindings.xjb следующие:
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <jxb:bindings schemaLocation="po.xsd" node="/xs:schema"> <!-- ... binding-declarations ... --> </jxb:bindings> <!-- schemaLocation="po.xsd" node="/xs:schema" --> </jxb:bindings>
XML-файл с корневым элементом <jaxb:bindings> считают внешним обязательным файлом. Корневой элемент должен определить атрибут версии JAXB, которому должны подчиниться его обязательные объявления; определенно корневой элемент <jxb:bindings> должен содержать или <объявление jxb:version> или атрибут version. В отличие от этого, делая обязательные встроенные объявления, номер версии JAXB делается как атрибут объявления <xsd:schema>:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="1.0">
Как показано в Версии JAXB, Пространстве имен, и Атрибутах Схемы, объявления пространства имен во внешнем обязательном файле объявлений включают и пространство имен JAXB и пространство имен XMLSchema. Отметьте, что префиксы, используемые в этом примере, могли фактически быть чем-либо, что Вы хотите; важная вещь состоит в том, чтобы последовательно использовать любые префиксы, которые Вы определяете здесь в последующих объявлениях в файле.
Четвертая строка кода в Версии JAXB, Пространстве имен, и Атрибутах Схемы определяет имя схемы, к которой этот обязательный файл объявлений применяется, и узел схемы, в котором сначала вступят в силу настройки. Последующие обязательные объявления в этом файле могут сослаться на определенные узлы в пределах схемы, но это первое объявление должно охватить схему в целом; например, в bindings.xjb:
<jxb:bindings schemaLocation="po.xsd" node="/xs:schema">
Глобальная схема обязательные объявления в bindings.xjb является тем же самым как теми в po.xsd для примера Преобразователя DataType. Единственная разница - то, что, потому что объявления в po.xsd делаются встроенными, следует встроить их в элементы <xs:appinfo>, которые поочередно встраиваются в элементы <xs:annotation>. Встраивание объявлений таким образом является ненужным во внешнем файле привязки.
<jxb:globalBindings fixedAttributeAsConstantProperty="true" collectionType="java.util.Vector" typesafeEnumBase="xs:NCName" choiceContentProperty="false" typesafeEnumMemberName="generateError" bindingStyle="elementBinding" enableFailFastCheck="false" generateIsSetMethod="false" underscoreBinding="asCharInWord"/> <jxb:schemaBindings> <jxb:package name="primer.myPo"> <jxb:javadoc> <![CDATA[<body> Package level documentation for generated package primer.myPo.</body>]]> </jxb:javadoc> </jxb:package> <jxb:nameXmlTransform> <jxb:elementName suffix="Element"/> </jxb:nameXmlTransform> </jxb:schemaBindings>
В сравнении синтаксис, используемый в po.xsd для примера Преобразователя DataType:
<xsd:annotation> <xsd:appinfo> <jxb:globalBindings ... binding-declarations ... <jxb:schemaBindings> ... binding-declarations ... </jxb:schemaBindings> </xsd:appinfo> </xsd:annotation>
class уровни обязательные объявления в bindings.xjb отличается от аналогичных объявлений в po.xsd для примера Преобразователя Типа данных двумя способами:
<jxb:bindings node="//node-type[@name=’node-name’]">
Например, следующие шоу кода обязательные объявления для complexType по имени USAddress.
<jxb:bindings node="//xs:complexType [@name=’USAddress’]"> <jxb:class> <jxb:javadoc> <![CDATA[ First line of documentation for a <b>USAddress</b>. ]]> </jxb:javadoc> </jxb:class> <jxb:bindings node=".//xs:element [@name=’name’]"> <jxb:property name="toName"/> </jxb:bindings> <jxb:bindings node=".//xs:element [@name=’zip’]"> <jxb:property name="zipCode"/> </jxb:bindings> </jxb:bindings> <!-- node="//xs:complexType [@name=’USAddress’]" -->
Отметьте в этом примере, что USAddress является родителем дочерних элементов name и zip, и поэтому тег </jxb:bindings> включает объявления bindings для дочерних элементов и class уровень объявление javadoc.
Внешние Настраивают пример, идентично примеру Преобразователя DataType, за исключением того, что обязательные объявления во Внешнем Настраивают пример, делаются при использовании внешнего обязательного файла объявлений, а не встроенными в исходной XML-схеме.
Обязательный файл настройки, используемый во Внешнем, Настраивает пример, jaxb-ri-install/samples/external-customize/binding.xjb.
Этот раздел сравнивает объявления настройки в bindings.xjb с аналогичными объявлениями, используемыми в XML-схеме, po.xsd, в примере Преобразователя DataType. Два набора объявлений достигают точно тех же самых результатов.
Чтобы скомпилировать и выполнить Внешнее Настраивают пример, используя Муравья, в окне терминала, пойдите в jaxb-ri-install/samples/external-customize/ каталог и введите следующее:
ant