Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 元素http://www.w3.org/2001/XMLSchema:complexType 在此上下文中无效_C#_Xml_Xsd_Xsd Validation_Xml Validation - Fatal编程技术网

C# 元素http://www.w3.org/2001/XMLSchema:complexType 在此上下文中无效

C# 元素http://www.w3.org/2001/XMLSchema:complexType 在此上下文中无效,c#,xml,xsd,xsd-validation,xml-validation,C#,Xml,Xsd,Xsd Validation,Xml Validation,我正在尝试验证这个XML文件 <session> <mic id="1" posname="T1" x="0.0" y="0.0" z="0.0" /> </session> 使用这个XSD文件 <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormD

我正在尝试验证这个XML文件

<session>
    <mic id="1" posname="T1" x="0.0" y="0.0" z="0.0" />
</session>

使用这个XSD文件

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    attributeFormDefault="unqualified" 
    elementFormDefault="qualified">

    <xs:element name="session">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="mic" type="micType" minOccurs="1" maxOccurs="4">
                </xs:element>

                <xs:complexType name="micType">
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute type="xs:int" name="id"/>
                            <xs:attribute type="xs:string" name="posname"/>
                            <xs:attribute type="xs:float" name="x"/>
                            <xs:attribute type="xs:float" name="y"/>
                            <xs:attribute type="xs:float" name="z"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType> 
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

但我得到了这个错误信息:

XmlSchema错误:元素在此上下文中无效


如果我只有麦克风元素的属性定义,程序运行正常。我不知道我做错了什么。我试图让XSD验证mic元素的数据类型。有人能告诉我我做错了什么吗?

名为micType的complexType应该定义为全局类型声明,即它应该是xs:schema元素的直接子元素。

您拥有的是复杂类型的局部和全局声明的不可行的混合体。在全局(如Michael Kay所述)或本地定义一个
micType

全局complexType声明

本地complexType声明


无论哪种方法都可以,都将成功验证您的XML。

非常感谢您解释这一点并给出代码片段。现在可以了。谢谢你的建议。这个评论引出了一个解决方案,我不知道我是否可以标记2个答案,所以我用代码片段接受了答案。我以前从未使用过xml,更不用说xml验证了,所以我真的很高兴你们,包括kjhughes,花时间来帮助我
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           attributeFormDefault="unqualified" 
           elementFormDefault="qualified">
  <xs:element name="session">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="mic" type="micType" minOccurs="1" maxOccurs="4"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="micType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute type="xs:int" name="id"/>
        <xs:attribute type="xs:string" name="posname"/>
        <xs:attribute type="xs:float" name="x"/>
        <xs:attribute type="xs:float" name="y"/>
        <xs:attribute type="xs:float" name="z"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           attributeFormDefault="unqualified" 
           elementFormDefault="qualified">
  <xs:element name="session">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="mic" minOccurs="1" maxOccurs="4">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute type="xs:int" name="id"/>
                <xs:attribute type="xs:string" name="posname"/>
                <xs:attribute type="xs:float" name="x"/>
                <xs:attribute type="xs:float" name="y"/>
                <xs:attribute type="xs:float" name="z"/>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>