我不是一个大的XSD专家..所以我正在使用xsd.exe快速生成一些我需要的xsd,然后稍微调整一下(minOccur等)。
但是现在它创建了两个XSD文件,主要文件和另一个定义复杂类型的文件。我怎么能把它们混在一起?我已经尝试了一段时间,但我不断收到编译错误。
这是他们的样子:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:app1="urn:ietf:params:xml:ns:xmpp-bind">
<xs:import namespace="urn:ietf:params:xml:ns:xmpp-bind" schemaLocation="Binding_app1.xsd" />
<xs:element name="iq">
<xs:complexType>
<xs:sequence>
<xs:element ref="app1:bind" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
<xs:attribute name="to" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="iq" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
和
<?xml version="1.0" standalone="yes"?>
<xs:schema targetNamespace="urn:ietf:params:xml:ns:xmpp-bind" xmlns:mstns="urn:ietf:params:xml:ns:xmpp-bind" xmlns="urn:ietf:params:xml:ns:xmpp-bind" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:app1="urn:ietf:params:xml:ns:xmpp-bind">
<xs:element name="bind">
<xs:complexType>
<xs:sequence>
<xs:element name="resource" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
谢谢!
答案 0 :(得分:2)
鉴于XSD,并假设您尝试验证现有XML,您无法转换为一个文件。只有一个命名空间可以由XSD文件描述,并且您显示了两个。
唯一的方法是将所有内容放在一个命名空间中,然后只需将导入文件的内容复制到导入文件中;删除任何外部引用(xsd:import),应该这样做。但是,在这种情况下,您将无法验证以前使用的内容......
这就是单个命名空间XSD的样子:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XSR Module (http://www.paschidev.com)-->
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:app1="urn:ietf:params:xml:ns:xmpp-bind">
<xs:element name="iq">
<xs:complexType>
<xs:sequence>
<xs:element ref="bind"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="to" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="iq"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="bind">
<xs:complexType>
<xs:sequence>
<xs:element name="resource" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我不能强调这个XSD不会验证你用XSD.exe生成文件的源...