生成 xsd 文件时出现问题,因为引用了另一个模式中的元素
Problems with generating xsd file because ref to a element in another schema
我在从模式生成 xsd 文件时遇到了一些问题,因为它引用了另一个模式中的元素。你们中有人知道如何解决这个问题吗?这是我试图从中创建 xsd 的架构。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="urn:ean.ucc:2" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:ean.ucc:2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import />
<xs:element name="message">
<xs:complexType>
<xs:sequence>
<xs:element ref="entityIdentification" />
<xs:element name="transaction">
<xs:complexType>
<xs:sequence>
<xs:element ref="entityIdentification" />
<xs:element ref="command" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="documentCommand">
<xs:complexType>
<xs:sequence>
<xs:element ref="documentCommandHeader" />
<xs:element ref="documentCommandOperand" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如您所见,它引用了许多其他元素。我创建此模式的方法是使用 vs2013 中的工具从 XML 文件创建模式。
希望你们中的一些人知道如何解决这个问题,谢谢!
您需要阅读并理解 XML 命名空间的工作原理,以及当一个模式使用另一个模式的类型时,它们与两个模式之间的关系有何关联。
This article 是这种理解的绝佳起点;尽管使用的工具是付费的,但我不以任何方式推广或附属。
相关位:
CommonTypes.xsd
<?xml version="1.0" encoding="utf-16"?>
<xs:schema targetNamespace="http://NamespaceTest.com/CommonTypes"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:complexType name="AddressType">
<xs:sequence>
<xs:element name="Line1" type="xs:string" />
<xs:element name="Line2" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="PriceType">
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PaymentMethodType">
<xs:restriction base="xs:string">
<xs:enumeration value="VISA" />
<xs:enumeration value="MasterCard" />
<xs:enumeration value="Cash" />
<xs:enumeration value="Amex" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
CustomerTypes.xsd
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:cmn="http://NamespaceTest.com/CommonTypes"
targetNamespace="http://NamespaceTest.com/CustomerTypes"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:import schemaLocation="CommonTypes.xsd"
namespace="http://NamespaceTest.com/CommonTypes"/>
<xs:complexType name="CustomerType">
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="DeliveryAddress" type="cmn:AddressType" />
<xs:element name="BillingAddress" type="cmn:AddressType" />
</xs:sequence>
</xs:complexType>
</xs:schema>
我在从模式生成 xsd 文件时遇到了一些问题,因为它引用了另一个模式中的元素。你们中有人知道如何解决这个问题吗?这是我试图从中创建 xsd 的架构。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:tns="urn:ean.ucc:2" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:ean.ucc:2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import />
<xs:element name="message">
<xs:complexType>
<xs:sequence>
<xs:element ref="entityIdentification" />
<xs:element name="transaction">
<xs:complexType>
<xs:sequence>
<xs:element ref="entityIdentification" />
<xs:element ref="command" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="documentCommand">
<xs:complexType>
<xs:sequence>
<xs:element ref="documentCommandHeader" />
<xs:element ref="documentCommandOperand" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如您所见,它引用了许多其他元素。我创建此模式的方法是使用 vs2013 中的工具从 XML 文件创建模式。
希望你们中的一些人知道如何解决这个问题,谢谢!
您需要阅读并理解 XML 命名空间的工作原理,以及当一个模式使用另一个模式的类型时,它们与两个模式之间的关系有何关联。
This article 是这种理解的绝佳起点;尽管使用的工具是付费的,但我不以任何方式推广或附属。
相关位:
CommonTypes.xsd
<?xml version="1.0" encoding="utf-16"?> <xs:schema targetNamespace="http://NamespaceTest.com/CommonTypes" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:complexType name="AddressType"> <xs:sequence> <xs:element name="Line1" type="xs:string" /> <xs:element name="Line2" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:simpleType name="PriceType"> <xs:restriction base="xs:decimal"> <xs:fractionDigits value="2" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="PaymentMethodType"> <xs:restriction base="xs:string"> <xs:enumeration value="VISA" /> <xs:enumeration value="MasterCard" /> <xs:enumeration value="Cash" /> <xs:enumeration value="Amex" /> </xs:restriction> </xs:simpleType> </xs:schema>
CustomerTypes.xsd
<?xml version="1.0" encoding="utf-16"?> <xs:schema xmlns:cmn="http://NamespaceTest.com/CommonTypes" targetNamespace="http://NamespaceTest.com/CustomerTypes" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:import schemaLocation="CommonTypes.xsd" namespace="http://NamespaceTest.com/CommonTypes"/> <xs:complexType name="CustomerType"> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="DeliveryAddress" type="cmn:AddressType" /> <xs:element name="BillingAddress" type="cmn:AddressType" /> </xs:sequence> </xs:complexType> </xs:schema>