所以我不熟悉使用 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 列出錯:未找到元素“電影”的宣告
架構是自動生成的(我使用的是 XML Copy Editor)。XML 和 XSD 檔案的語法也是正確的。
uj5u.com熱心網友回復:
您必須以某種方式將 XSD 與 XML 關聯起來。
一種常見的方法是使用noNamespaceSchemaLocation非命名空間 XML 或schemaLocation命名空間 XML。要使用這種方法,請更改
<movies>
到
<movies xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="try.xsd">
您還可以使用驗證器工具的機制來指定關聯,但這些機制往往是特定于實作的,而上述提示往往適用于所有驗證器。
也可以看看
- 如何使用 schemaLocation 或 noNamespaceSchemaLocation 將 XML 鏈接到 XSD?
- 如何正確參考本地 XML Schema 檔案?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411827.html
標籤:
