元素宣言

时间:2012-03-26 00:01:15

标签: xml validation xsd declaration

我正在尝试将XSD文件链接到XML文件。在验证期间,我不断收到同样的错误:第3行第167列:cvc-elt.1:找不到元素'SecondQ'的声明。

我正在使用:http://xmlvalidator.new-studio.org/来验证文档。

我也注意到这是一个常见的问题,但我无法通过阅读其他帖子来解决我的情况。

这两个文件位于同一个文件夹中,域名没有网站,本地只有两个文件。

XML文档:     

<SecondQ xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema q2x.xsd">

  <Medicine MID="60004">
    <MedicineName>Thorazin</MedicineName>
    <MedicineDetails>
      <Manufacturer>Pfiezer</Manufacturer>
      <Strength>200</Strength>
      <PatientMedInfo>
        <RefillLeft>3</RefillLeft>
        <Repetition>1</Repetition>
        <Duration>30</Duration>
      </PatientMedInfo>
    </MedicineDetails>
  </Medicine>
  <Medicine MID="60005">
    <MedicineName>Ciprodex</MedicineName>
    <MedicineDetails>
      <Manufacturer>Alcon Laboratories Inc.</Manufacturer>
      <Strength>6</Strength>
      <PatientMedInfo>
        <RefillLeft>1</RefillLeft>
        <Repetition>3</Repetition>
        <Duration>21</Duration>
      </PatientMedInfo>
    </MedicineDetails>
  </Medicine>
</SecondQ>

XSD文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="SecondQ">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Medicine" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="MedicineName" type="xsd:string"/>
                            <xsd:element name="MedicineDetails">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name="Manufacturer" type="xsd:string"/>
                                        <xsd:element name="Strength" type="xsd:integer"/>
                                        <xsd:element name="PatientMedInfo">
                                            <xsd:complexType>
                                                <xsd:sequence>
                                                    <xsd:element name="RefillLeft" type="xsd:integer"/>
                                                    <xsd:element name="Repetition" type="xsd:integer"/>
                                                    <xsd:element name="Duration" type="xsd:integer"/>
                                                </xsd:sequence>
                                            </xsd:complexType>
                                        </xsd:element>
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                        <xsd:attribute name="MID" type="xsd:string" use="required"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

提前致谢。

1 个答案:

答案 0 :(得分:0)

假设您的XSD是“好”的,那么您需要在XML中修复几个问题:

  • 删除默认命名空间,即删除xmlns="http://www.w3.org/2001/XMLSchema";您的XSD没有声明目标名称空间,您的XML文档元素应该是不合格的。
  • 将您的xsi:schemaLocation="http://www.w3.org/2001/XMLSchema q2x.xsd"更改为xsi:noNamespaceSchemaLocation="q2x.xsd"