如何在XSD文件中添加静态属性

时间:2017-08-30 07:40:16

标签: xsd

我有一个Java接口,例如如下 公共接口A

 public static final String SD_A= "SD-A";

我的问题是如何在XSD文件中编写上述属性?因为我有使用XML BOM获取错误的blaze顾问项目 - 在当前范围内未定义A.所以当我添加该接口时如下 我得到的错误如下: - 不是由'A'

定义的常量或静态属性

有任何解决问题的建议吗?

2 个答案:

答案 0 :(得分:0)

如果我说得对,你想为你的模式派生类添加一个静态字段。

您可以做的最简单的事情是使用代码注入器插件:

Inserting code with XJC+xsd+jxb using the options " -Xinject-code -extension "

类似的东西:

<jxb:bindings schemaLocation="schema.xsd">
     <jxb:bindings node="/xs:schema/xs:complexType[@name='SomeExtension']">
        <ci:code>
        public static final String EXTENSION_CODE = "NAMEOFTHEEXTENSION";
        </ci:code>
     </jxb:bindings>
</jxb:bindings>

答案 1 :(得分:0)

我通过eclipse创建了XSD文件,即File-&gt; New-&gt; Other-&gt; JAXB-&gt;来自JAXB类的Scema 来自Java应用程序的Java类。但现在我需要制作一个Java接口的XSD。所以当我按照上面的过程创建一个XSD时,它显示错误“ com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions的1个计数 com.test.IClassproduct是一个接口,JAXB无法处理接口。

所以我在另一个XSD文件中添加了该接口,格式如下

<xs:complexType name="IClassProducts"> <xs:sequence> <xs:element name="AHS" type="static" fixed="AHS" /> </xs:sequence> </xs:complexType>

但现在显示错误

'AHS'不是'IClassProducts'

定义的常量或静态属性

因此建议您使用以下格式。

<jxb:bindings schemaLocation="schema.xsd">
     <jxb:bindings node="/xs:schema/xs:complexType[@name='SomeExtension']">
        <ci:code>
        public static final String EXTENSION_CODE = "NAMEOFTHEEXTENSION";
        </ci:code>
     </jxb:bindings>
</jxb:bindings>

我的问题是我将添加此内容以及如何使用。我的目的无论如何我在XSD文件中使用了上面的静态属性'AHS'所以当我加载那个XSD文件时它可以识别该属性并可以解决以下错误 'AHS'不是'IClassProducts'

定义的常量或静态属性