我无法获取此XML文件来验证我的架构,根据我的XML编辑器,该架构没有语法错误。我试图使课程成为一个complexType元素,但它一直告诉我,我不能。 XML是正确的,它绝对是我的架构的东西,我只是想不出来。
这是XML:
<?xml version="1.0" encoding="utf-8"?>
<courses xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="course_offerings.xsd">
<course id="WEB225">
<name>Web Development II</name>
<offered>Spring</offered>
<pre_reqs>WEB125</pre_reqs>
</course>
<course id="WEB125">
<name>Web Development I</name>
<offered>Fall</offered>
</course>
<course id="WEB325">
<name>Client-Side Scripting</name>
<offered>Spring</offered>
<offered>Fall</offered>
<pre_reqs>WEB225</pre_reqs>
</course>
</courses>
这是我的架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="courses">
<xs:complexType>
<xs:sequence>
<xs:element name="course" type="xs:string"/>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="offered" type="xs:string"/>
<xs:element name="pre_reqs" type="xs:string"/>
</xs:sequence>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:1)
既然你没有提到你得到的错误,我正在提供我能观察到的东西..
xsi:noNamespaceSchemaLocation="course_offerings.xsd"
这意味着它是您的默认XML架构。您需要验证模式的名称并确保它存在于默认路径中..(与XML文件的名称相同)。否则,您最终可能会看到错误unable to locate schema
course_offerings.xsd
<xs:element name="course" type="xs:string"/>
声明为字符串..不应该是这种情况..在您的XML中,它是一个complexType,即具有子元素的元素。
参考以下示例XSD:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="courses">
<xs:complexType>
<xs:sequence>
<xs:element name="course">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="offered" type="xs:string"/>
<xs:element name="pre_reqs" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
上面提到的样式是分层的,有另一种方法来编写模式文件。如果你了解当前的后果,如果你想进一步了解,那么我会告诉你..
现在这个解释应该是好的..