У меня есть XSD файл (yahoo.xsd), где я импортировать другой файл XSD так:Символ уже определен. Используйте JAXB свойство для разрешения конфликта
<xs:import schemaLocation="stock.xsd"/>
<xs:attribute name="lang" type="xs:NCName"/>
stock.xsd выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng">
<xs:import namespace="http://www.yahooapis.com/v1/base.rng" schemaLocation="yahoo.xsd"/>
<xs:element name="quote">
<xs:complexType>
<xs:sequence>
<xs:element ref="Symbol"/>
</xs:sequence>
<xs:attribute name="symbol" use="required" type="xs:NCName"/>
</xs:complexType>
</xs:element>
<xs:element name="Symbol" type="xs:NCName"/>
</xs:schema>
Когда я компилирую с xjc, я получаю следующее сообщение об ошибке:
[ERROR] Свойство «Символ» уже определено. Используйте < jaxb: property> для разрешения этого конфликта.
В основном я нашел решение для этого здесь, на SO (JAXB Compiling Issue - [ERROR] Property "Any" is already defined), но я не могу заставить его работать. Я предполагаю, что мой XPath ошибочен.
Это связывание файла Я использую:
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.1">
<bindings schemaLocation="yahoo.xsd" version="1.0" >
<!-- rename the value element -->
<bindings node="//xs:element[@name='quote']/xs:complexType/xs:sequence/xs:element[@ref='Symbol']">
<property name="SymbolAttribute"/>
</bindings>
</bindings>
Если я сейчас компиляции с XJC -b это говорит о том, что результаты оценки XPath в пустом целевом узле.
Возможно, мне нужно переименовать определение символа, а затем ссылку? как это сделать автоматически?
Вы пытались добавить схему в качестве базового узла? например.? –