我正在尝试验证这个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错误:元素http://www.w3.org/2001/XMLSchema:complexType在此上下文中无效。
如果我只有麦克风元素的属性定义,程序运行正常。我不知道我做错了什么。我试图让XSD验证mic元素的数据类型。谁能告诉我我做错了什么?
您拥有的是复杂类型的本地和全局声明的不可行的混合体。在全局(如Michael Kay所述)或本地定义一个micType
:
<?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>
无论哪种方法都可以,都将成功验证XML。
名为micType的复合类型应该定义为全局类型声明,即它应该是xs: schema元素的直接子元素。
我正在尝试验证这个XML文件第127行XmlSchema错误:Element http://www.w3.org/2001/XmlSchema:Element在此上下文中无效。125号线,位置4。相关架构项sourceURI:virtual://server/schema.xsd,第177行,位置2。 在这一行-->xs:element name=“msg:market”type=“type-sc
其中是命名空间的XSD架构定义文件“http://www.w3.org/2001/XMLSchema-instance"?
名称空间“http://www.w3.org/2001/xmlschema-instance”的XSD模式定义文件在哪里?
我需要将XML转换为另一个XML,并更改名称空间。我需要在根元素中添加名称空间t。输入XML:- 我需要以下预期输出XML:- 我尝试了以下XSLT,但没有得到预期的结果:- 但作为:-
我需要能够针对XSD验证XML文件,即使没有Internet连接。我的XML文件正确地访问XSD,并且当我通过通常的URL访问XS命名空间时,验证(或不验证)XSD的内容如下: 但是,当我试图访问XMLSchema的本地版本时,我会收到错误消息(模式中根元素的定义不正确”。我从网站下载文件按照通常的说明这样做,并将其保存为schema2.xsd.我验证文件URI在下面的代码正常工作通过粘贴URI到
我得到以下错误时运行我的应用程序:附加信息:错误在第2行位置64.从命名空间http://www.w3.org/2001/XMLSchema-instance期待元素CustomeLeads...遇到名称为“自定义线索”、命名空间的“元素”。 我不明白为什么我会收到这个错误消息,因为正如你从XML中看到的,“自定义领导”包含在XML中。如果我取出命名空间,文件将不会读取元素。包括命名空间似乎工作,