2009-08-14 1 views
0

Я использую генератор кода кода Castor. Если у вас есть две схемы с complexTypes определяется следующим образом:Как я могу работать с поведением Кастора по умолчанию для создания классов-оболочек для элементов complexType?

<xs:schema ...blah...> 
    <xs:complexType name="FooBarType"> 
    <xs:sequence> 
     <xs:element name="meh"/> 
     ...etc... 
    </xs:sequence> 
    </xs:complexType> 
    <xs:element name="FooBar"/> 
</xs:schema> 

и

<xs:schema ...blah ...> 
    <xs:include schemaLocation="FooBar.xsd"> 
    <xs:complexType name="AnotherSchemaType"> 
    <xs:sequence> 
     <xs:element name="foo" type="FooBarType"/> 
     ...etc... 
    </xs:sequence> 
    </xs:complexType> 
    <xs:element name="AnotherSchema"/> 
</xs:schema> 

Теперь, из второй схемы Castor генерирует поле _foo типа Foo, который является подклассом класса FooBar.

Почему имя не может быть именем? Я понимаю, что избежать коллизий имен, но я хочу поле _foo типа FooBar в моем сгенерированном классе. Есть идеи?

ответ

0

Похоже, что ответ зависит от используемой версии Castor. В более новых версиях, кажется, вы можете добавить

<elementBinding name="/complexType:AnotherSchemaType/foo"> 
    <java-class name="FooBar"/> 
</elementBinding> 

в файл binding.xml и он будет использовать FooBar как класс. Кажется, что это работает не в версии 1.05, а в том, что я использую. Поскольку я не тестировал выше в более новых версиях, я не могу гарантировать, что он будет работать/правильно.

Смежные вопросы