Примечание: Я EclipseLink JAXB (MOXy) и являюсь членом JAXB 2 (JSR-222) экспертная группа.
Может ли Кастор сделать это?Если это так, какой будет синтаксис задачи Ant для него.Если нет, то возможно, JAXB будет лучшей альтернативой?
Ниже приведен пример того, как это можно сделать с помощью JAXB:
Product
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Product"
xmlns:tns="http://www.example.org/Product"
elementFormDefault="qualified">
<element name="product">
<complexType>
<sequence>
<element name="id" type="string"/>
<element name="name" type="string"/>
</sequence>
</complexType>
</element>
</schema>
Поскольку несколько XML-схем импортируют Product.xsd, мы можем использовать файлы эпизодов, чтобы классы, соответствующие Product.xsd, создавались только один раз.
xjc -d out -episode product.episode Product.xsd
ProductPurchaseRequest.xsd
Ниже приведен пример схемы XML, которая импортирует Product.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/ProductPurchaseRequest"
xmlns:tns="http://www.example.org/ProductPurchaseRequest"
xmlns:prod="http://www.example.org/Product"
elementFormDefault="qualified">
<import namespace="http://www.example.org/Product" schemaLocation="Product.xsd"/>
<element name="purchase-request">
<complexType>
<sequence>
<element ref="prod:product" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</schema>
Когда мы генерируем классы из этой схемы XML, мы будем ссылаться на файл эпизода, который мысозданный, когда мы сгенерировали классы Java из Product.xsd.
xjc -d out ProductPurchaseRequest.xsd -extension -b product.episode
ProductQuoteRequest.xsd
Ниже приведен еще один пример схемы XML, которая импортирует Product.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/ProductQuoteRequest"
xmlns:tns="http://www.example.org/ProductQuoteRequest"
xmlns:prod="http://www.example.org/Product"
elementFormDefault="qualified">
<import namespace="http://www.example.org/Product" schemaLocation="Product.xsd"/>
<element name="quote">
<complexType>
<sequence>
<element ref="prod:product"/>
</sequence>
</complexType>
</element>
</schema>
Опять же, когда мы сгенерируем классы из этой схемы XML, мы будем ссылаться на файл эпизода, который мы создали при создании классов Java из Product.xsd.
xjc -d out ProductQuoteRequest.xsd -extension -b product.episode
Для получения дополнительной информации