我是使用 XML 和 XSD 文件的新手。我想做的是使用模式验证 xml 文件。这是我的 XML 文件的开头:
<?xml version="1.0" encoding="UTF-8"?>
<movies>
<doc id="000007">
<docid>000007</docid>
<title>#73, Shanthi Nivasa</title>
<year>2007</year>
<type>movie</type>
<colorinfos>
<colorinfo>Color</colorinfo>
</colorinfos>
<genres>
<genre>Musical</genre>
</genres>
<languages>
<language>Kannada</language>
</languages>
<countries>
<country>India</country>
</countries>
<releasedates>
<releasedate country="India">14 June 2007</releasedate>
</releasedates>
<directors>
<director>Sudeep</director>
</directors>
<composers>
<composer>Bharadwaj (I)</composer>
</composers>
<cast>
<credit>
<actor>Shivarajkumar</actor>
<role>Himself</role>
</credit>
<credit>
<actor>Sudeep</actor>
<role>Raghu</role>
</credit>
<credit>
<actor>Vishnuvardhan (I)</actor>
<role>Himself</role>
</credit>
</cast>
<plot>#73, Shanthi Nivasa - the littlest things in life that give peace and happiness in a home. Although #73, Shanthi Nivasa seems to have everything on the surface, it lacks the depth of peace. Amidst the constant family fights, Raghu enters the household as the new cook and brings the ingredient of peace with him. And mysteriously, he leaves. What will #73, Shanthi Nivasa do without Raghu? Will they be able to hold their family together without this unassuming cook's presence?</plot>
<url>http://localhost:8983/solr/movie.html?000007</url>
</doc>
</movies>
这是我的架构的开始:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="movies">
<xs:complexType>
<xs:sequence>
<xs:element name="doc" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:short" name="docid"/>
<xs:element type="xs:string" name="title"/>
<xs:element type="xs:short" name="year"/>
<xs:element type="xs:string" name="type"/>
<xs:element name="colorinfos" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="colorinfo" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="editors" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="editor" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="genres" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="genre" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="keywords" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="keyword" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="languages" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="language" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="soundmixes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="soundmix"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="countries">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="country" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="certificates" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="certificate" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="country" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="releasedates" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="releasedate" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="country" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="runningtimes" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="runningtime" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:short">
<xs:attribute type="xs:string" name="country" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="directors" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="director" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="producers" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="producer" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="writers" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="writer" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="composers" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="composer" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="othercrew" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="credit" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:string" name="job"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="cast" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="credit" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="actor"/>
<xs:element type="xs:string" name="role"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element type="xs:string" name="plot"/>
<xs:element type="xs:anyURI" name="url"/>
</xs:sequence>
<xs:attribute type="xs:short" name="id" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
每当我尝试验证文件时出现的错误是:
第 2 行第 9 列错误:未找到元素“movies”的声明
该架构是自动生成的(我正在使用 XML 复制编辑器)。
XML 和 XSD 文件的语法也是正确的。
您必须以某种方式将 XSD 与 XML 关联起来。
执行此操作的常见方法是use noNamespaceSchemaLocation对于非命名空间 XML 或schemaLocation对于命名空间 XML https://www.w3.org/TR/xmlschema11-1/#xsi_schemaLocation。要使用此方法,请更改
<movies>
to
<movies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="try.xsd">
您还可以使用验证器工具的机制来指定关联,但这些机制往往是特定于实现的,而上述提示往往适用于所有验证器。
See also
- 如何使用 schemaLocation 或 noNamespaceSchemaLocation 将 XML 链接到 XSD? https://stackoverflow.com/q/35411871/290085
- 如何正确引用本地XML Schema文件? https://stackoverflow.com/q/19253402/290085
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)