C# 元素http://www.w3.org/2001/XMLSchema:complexType 在此上下文中无效
我正在尝试验证这个XML文件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
<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>