Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
596 views
in Technique[技术] by (71.8m points)

java - How do I create JAXB bindings for docbook

When I run xjc against docbook.xsd, I get a lot of errors:

parsing a schema...
[ERROR] Property "Revision" is already defined. Use <jaxb:property> to resolve this conflict.
  line 5965 of file:/C:/log/11/04/20/docbook-4.5/dbpoolx.xsd

[ERROR] The following location is relevant to the above error
  line 521 of file:/C:/log/11/04/20/docbook-4.5/dbpoolx.xsd

[ERROR] Element "seealsoie" shows up in more than one properties.
  line 1737 of file:/C:/log/11/04/20/docbook-4.5/dbhierx.xsd

[ERROR] The following location is relevant to the above error
  line 1733 of file:/C:/log/11/04/20/docbook-4.5/dbhierx.xsd

[ERROR] Element "imageobjectco" shows up in more than one properties.
  line 3526 of file:/C:/log/11/04/20/docbook-4.5/dbpoolx.xsd

[ERROR] The following location is relevant to the above error
  line 3525 of file:/C:/log/11/04/20/docbook-4.5/dbpoolx.xsd

....etc.

I've tried this with docbook version 4.5 and version 5.0, but with the same result.

Any pointers would be apreciated. Thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You could use the following bindings file with the DocBook version 5 XML Schema:

binding.xml

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    jxb:extensionBindingPrefixes="xjc"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:xml="http://www.w3.org/XML/1998/namespace"
    xmlns:docbook="http://docbook.org/ns/docbook"
    version="2.1">


    <jxb:globalBindings>
        <xjc:simple />
    </jxb:globalBindings>

    <jxb:bindings schemaLocation="docbook.xsd">
            <jxb:bindings node="//xs:attributeGroup[@name='db.common.attributes']/xs:attribute[@name='version']">
                <jxb:property name="commonVersion"/>
            </jxb:bindings>
            <jxb:bindings node="//xs:attributeGroup[@name='db.common.attributes']/xs:attribute[@name='revision']">
                <jxb:property name="commonRevision"/>
            </jxb:bindings>
            <jxb:bindings node="//xs:attributeGroup[@name='db.common.attributes']/xs:attribute[@ref='xml:lang']">
                <jxb:property name="xmlLang"/>
            </jxb:bindings>
            <jxb:bindings node="//xs:attributeGroup[@name='db.common.linking.attributes']/xs:attribute[@ref='xlink:role']">
                <jxb:property name="xlinkRole"/>
            </jxb:bindings>
            <jxb:bindings node="//xs:attributeGroup[@name='db.common.linking.attributes']/xs:attribute[@ref='xlink:type']">
                <jxb:property name="xlinkType"/>
            </jxb:bindings>
            <jxb:bindings node="//xs:attributeGroup[@name='db.common.linking.attributes']/xs:attribute[@ref='xlink:title']">
                <jxb:property name="xlinkTitle"/>
            </jxb:bindings>
            <jxb:bindings node="//xs:element[@name='table']/xs:complexType/xs:attribute[@name='title']">
                <jxb:property name="titleAttribute"/>
            </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

The command line to include the bindings is:

xjc -extension -d out -b binding.xml docbook.xsd

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...