How do I create JAXB bindings for docbook

后端 未结 1 817
我寻月下人不归
我寻月下人不归 2020-12-21 03:37

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

parsing a schema...
[ERROR] Property \"Revision\" is already defined. Use <jax         


        
相关标签:
1条回答
  • 2020-12-21 04:20

    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
    
    0 讨论(0)
提交回复
热议问题