ich eine XSD-Datei (yahoo.xsd), wo ich eine andere XSD-Datei wie folgt importieren:Symbol ist bereits definiert. Verwenden Sie JAXB Eigenschaft, um den Konflikt zu lösen
<xs:import schemaLocation="stock.xsd"/>
<xs:attribute name="lang" type="xs:NCName"/>
Die stock.xsd sieht wie folgt aus:
<?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>
Wenn ich mit xjc kompiliere, erhalte ich die folgende Fehlermeldung:
[FEHLER] Eigenschaft "Symbol" ist bereits definiert. Verwenden Sie < jaxb: property> um diesen Konflikt zu lösen.
Ich fand im Grunde die Lösung für dieses hier auf SO (JAXB Compiling Issue - [ERROR] Property "Any" is already defined), aber ich kann es nicht zum Laufen bringen. Ich vermute, mein XPath ist falsch.
Dies ist die Einbindemappe ich verwende:
<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>
Wenn ich jetzt mit xjc kompilieren bin -b es sagt, dass die XPath Auswertungsergebnisse in einem leeren Zielknoten.
Ich muss wahrscheinlich die Symboldefinition umbenennen und dann auch den ref? Wie mache ich das automatisch?
haben Sie versucht, das Schema als Basisknoten hinzufügen? z.B.? –