从另一个运行时命名空间XSD导入类型

时间:2018-06-12 13:42:58

标签: xml import xsd xml-namespaces

我有两个.xsd个文件。一个包含我感兴趣的复杂类型,另一个包含这种复杂类型 例如:
档案ElementA.xsd

<xsd:schema 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
  targetNamespace="http://www.ElementANamespace.co.il" 
  xmlns="http://www.ElementANamespace.co.il" elementFormDefault="qualified" version="2.0">
    <xsd:complexType name="ElementA">
        <xsd:sequence>
           <xsd:element name="FirstElement" type="FirstElementType"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

档案ElementB.xsd

<xsd:schema id="ElementBData"
  targetNamespace="http://www.ElementANamespace.co.il"
  elementFormDefault="qualified"
  xmlns="http://www.ElementANamespace.co.il"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  version ="1.0" >

  <xs:include id="ElementA" schemaLocation="ElementA.xsd"/>
  <xsd:complexType name="ElementB">
       <xsd:sequence>
           <xsd:element name="ElementAImported" type="ElementA"/>
       </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

如您所见,它们都使用相同的名称 - ElementANamespace
生成的ElementA.cs是使用\n v20标志创建的 生成的ElementB.cs是使用\n v10标志创建的。

现在,当我包含ElementA时,生成器将其置于我的\n v10命名空间下,现在ElementA.xsd的ElementA对象与ElementB.xsd不同,因为名称空间。

我无法改变ElementA中的任何内容 我所做的任何更改都应该在ElementB中(xsd,命名空间,生成器,......) 除上述内容外,标志\n v10也无法更改。

有什么方法可以将ElementA保留在原始命名空间或以某种方式引用它? 这很重要,因为许多现有的函数都使用这个内存对象,我不想复制所有内容。

0 个答案:

没有答案