使用XJC编译具有多模式的XSD
我有一个XSD的格式:使用XJC编译具有多模式的XSD,xsd,xjc,Xsd,Xjc,我有一个XSD的格式: <?xml version="1.0" encoding="utf-16"?> <root> <xs:schema ---> .. .. </xs:schema> <xs:schema --> .. .. </xs:schema --> <xs:schema -->
<?xml version="1.0" encoding="utf-16"?>
<root>
<xs:schema --->
..
..
</xs:schema>
<xs:schema -->
..
..
</xs:schema -->
<xs:schema -->
..
..
</xs:schema -->
</root>
未能分析架构
我的问题是,我们是否可以使用XJC编译一个包含多个模式标记的XSD。我尝试了以下文件格式:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="abc" type="xs:string"/>
<xs:element name="cdf">
/xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
/xs:element>
对于上面的内容,它工作得非常好,适当地创建了类
它与名称空间声明有关吗?原则上,XSD规范允许在同一个XML文档中包含多个xs:schema元素,因此您尝试这样做并不是不合理的。在实践中,很多XSD软件(可能是大多数XSD软件)都没有为模式文档做好准备,其中xs:schema元素不是XML文档中最外层的元素,即使软件支持其他情况,不同的程序也不总是在行为方式上达成一致 有关进一步的讨论,请参阅,其中包括一个来自错误信息方的激烈争论,即根本没有支持您描述的输入类型的XSD软件 对于XJC,您最好的选择似乎是将每个xs:schema元素放在一个单独的XML文档中,并使用(a)单个驱动程序文件依次导入或包含它们,或者(b)将它们全部放在同一个目录中,并将目录名交给XJC;它将扫描目录中的模式文件并编译它们。您还可以使用
-wsdl
选项执行某些操作
[ERROR] The markup in the document following the root element must be well-formed.
line 44 of file:****.xsd
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="abc" type="xs:string"/>
<xs:element name="cdf">
/xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>