C# XML架构前缀错误

C# XML架构前缀错误,c#,xml,xsd,C#,Xml,Xsd,我曾尝试从c#类(使用xsd.exe)创建一个XML模式,其中我正在使用另一个XML模式中的类 之后,我在c#中加载模式,并填充一些缺少的属性,如导入的shema的shemalocation和名称空间的前缀 当我再次导出xml模式时,导入的模式类型的前缀是错误的,尽管它是声明的。前缀设置为“q1:enumeratedValues” 我做错了什么 <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:spirit="htt

我曾尝试从c#类(使用xsd.exe)创建一个XML模式,其中我正在使用另一个XML模式中的类

之后,我在c#中加载模式,并填充一些缺少的属性,如导入的shema的shemalocation和名称空间的前缀

当我再次导出xml模式时,导入的模式类型的前缀是错误的,尽管它是声明的。前缀设置为“q1:enumeratedValues”

我做错了什么

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" xmlns:myNamespace="file:///c:/Local/" elementFormDefault="qualified" targetNamespace="file:///c:/Local/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009/memoryMap.xsd" namespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" />
  <xs:element name="signals" type="myNamespace:signals" />
  <xs:complexType name="signals">
    <xs:complexContent mixed="false">
      <xs:extension base="myNamespace:vendorExtensionBase">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="unbounded" name="signal" type="myNamespace:signalType" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="vendorExtensionBase" abstract="true">
    <xs:attribute name="xsdversion" type="xs:string" />
  </xs:complexType>
  <xs:complexType name="signalType">
    <xs:complexContent mixed="false">
      <xs:extension base="myNamespace:vendorExtensionBase">
        <xs:sequence>
          <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="bitwidth" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="signed" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="fractionalBits" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="defaultValue" type="xs:string" />
          <xs:element minOccurs="0" maxOccurs="1" name="divider" type="xs:string" />
          <xs:element xmlns:q1="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1685-2009" minOccurs="0" maxOccurs="1" ref="q1:enumeratedValues" />
          <xs:element minOccurs="0" maxOccurs="1" name="scaling">
            <xs:complexType mixed="true">
              <xs:sequence>
                <xs:any maxOccurs="unbounded" />
              </xs:sequence>
              <xs:anyAttribute />
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>

名称空间前缀名称无关紧要。只有通过将名称空间前缀绑定到名称空间值,名称空间前缀才会产生意义


任何符合规范的XML处理器都不会关心特定的名称空间前缀名称,您也不应该这样做。

为什么这是错误的?在我看来这似乎是合理的。需要明确的是,前缀不相关-只与它映射到的名称空间相关。您可以添加一个示例XML吗?您好,这没有错,但我希望导入的架构中的类型类似。事实上,我得到了更多的导入模式和更多的自定义类型,如果前缀与导入模式中的前缀相同,那就更好了。。。唯一起作用的prefeix是我自己的shema…需要明确的是-绑定是包含特定名称空间声明的元素的本地绑定-它不是某种“全局”绑定。@Damien_异教者:正确,名称空间前缀声明的范围仅限于其出现的元素及其子元素。