2015-05-26 43 views
2

(見下面的更新對這個問題的起源)XJC外部約束力的文件總是失敗

有任何問題,而試圖與任何類型的外部綁定文件的運行xjc。 這裏的裝訂文件夾,我的副本嘗試使用:

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:pd="http://chubb.com/cpi/polsvc/xmlobj" 
    jxb:extensionBindingPrefixes="xjc" 
    version="2.1"> 

    <jxb:bindings schemaLocation="your-schema.xsd"> 
     <jxb:bindings node="//xs:complexType[@name='AddBankVaultRplyType']"> 
    </jxb:bindings> 
</jxb:bindings> 

我知道它什麼都不做,只是試圖讓一個簡單的例子來運行。 我運行下面的命令:

xjc -extension -b src/main/resources/bindings/cXML.xjb -dtd -d tmp src/main/resources/dtds/cXML.dtd -verbose

而且正在以下錯誤:

parsing a schema... 
[ERROR] Unsupported binding namespace "http://java.sun.com/xml/ns/jaxb". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"? 
    line 7 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb 

[ERROR] cvc-elt.1: Cannot find the declaration of element 'jxb:bindings'. 
    line 7 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb 

[ERROR] Unsupported binding namespace "http://java.sun.com/xml/ns/jaxb". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"? 
    line 8 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb 

[ERROR] Unsupported binding namespace "http://java.sun.com/xml/ns/jaxb". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"? 
    line 9 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb 

Failed to parse a schema. 

不管我把它總是與Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"文件JAXB項目綁定文件鍵入錯誤消息。

我在這裏錯過了什麼嗎?論文似乎應該非常直截了當,我不知道爲什麼它會給我提出問題。

XJC版本:

xjc -version 
xjc 2.2.8-b130911.1802 

謝謝!

UPDATE

的XJB文件的最初目的是修復與DTD的一些問題。具體命名衝突如:

[ERROR] Property "Name" is already defined. Use &lt;jaxb:property> to resolve this conflict. 

回答

0

這是因爲你正在編譯DTD。這是一種非常不同的動物,常規綁定不適用於DTD。

這是編譯DTD的sample projectbinding看起來如下:

<?xml version="1.0"?> 
<xml-java-binding-schema> 
    <options package="org.jvnet.hyperjaxb3.hibernate.mapping"/> 
    <element name="hibernate-mapping" type="class"/> 
    <element name="class" type="class" class="Clazz"> 
     <attribute name="subselect" property="SubselectAttribute"/> 
    </element> 
    <element name="typedef" type="class"> 
     <attribute name="class" property="Clazz"/> 
    </element> 
    <element name="import" type="class"> 
     <attribute name="class" property="Clazz"/> 
    </element> 
    <element name="composite-id" type="class"> 
     <attribute name="class" property="Clazz"/> 
    </element> 
    ... 
</xml-java-binding-schema> 
+0

Thannks的信息。從我所能找到的,在: http://grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.bind/jaxb-xjc/2.0/com/sun/tools/xjc/reader /dtd/bindinfo/bindingfile.xsd 和 http://xml.coverpages.org/jaxb-docs-ea200106.pdf 它看起來並不像它能夠解決我的問題與我使用的DTD是: [錯誤]屬性「名稱」已被定義。使用< jaxb:property>來解決此衝突。 沒有一個特定於dtd的東西似乎允許重命名屬性。任何想法或者我錯過了什麼。 –