【发布时间】:2014-07-24 22:41:02
【问题描述】:
我是 XSD 的新手。我的 XSD 文件当前格式正确且正在验证,并且我的 XML 文件格式正确,但是当我尝试对其进行验证时出现以下错误:“错误位于 8,第 33 列:内容模型不允许字符数据"
它不希望我为该主题添加任何文本(我目前将 PianoML 作为导致错误的第一个主题),但是如何在 XSD 中修复它?我将在底部发布完整文件,但这里是我认为需要修复的代码 sn-p:
<xs:element name="topic">
<xs:complexType>
<xs:attribute name="genre" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ART"/>
<xs:enumeration value="Music"/>
<xs:enumeration value="Science"/>
<xs:enumeration value="Technology"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
我尝试了很多方法,但总是出错。我确信这是一个非常简单的解决方案,但我的新手尝试和谷歌搜索并没有帮助。如何允许该文本?
这是 XML 文件 (presentations.xml):
<?xml version="1.0" encoding="UTF-8"?>
<presentations xmlns="http://www.brett.com/presentations"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.brett.com/presentations presentations.xsd"
>
<presentation date="2013-07-31" length="PT30M">
<topic genre="Music">PianoML</topic>
<presenters>
<name title="Mr." id="Y258">
<first>Elvis</first>
<middle>A</middle>
<last>Presley </last>
</name>
<name title="Miss" id="X365">
<first>Lady</first>
<last>Gaga</last>
</name>
</presenters>
</presentation>
<presentation date="2013-08-05" length="PT35M">
<topic genre="Science">AlienML</topic>
<presenters>
<name title="Mr." id="Y007">
<first>Will</first>
<last>Smith</last>
</name>
<name title="Mr." id="Y360">
<first>Tommy</first>
<first>Lee</first>
<last>Jones</last>
</name>
</presenters>
</presentation>
</presentations>
这是 XSD 文件 (presentations.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.brett.com/presentations"
targetNamespace="http://www.brett.com/presentations"
elementFormDefault="qualified">
<xs:element name="presentations">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="presentation"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="presentation">
<xs:complexType>
<xs:sequence>
<xs:element ref="topic"/>
<xs:element ref="presenters"/>
</xs:sequence>
<xs:attribute name="date" type="xs:string" use="required"/>
<xs:attribute name="length" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="topic">
<xs:complexType>
<xs:attribute name="genre" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ART"/>
<xs:enumeration value="Music"/>
<xs:enumeration value="Science"/>
<xs:enumeration value="Technology"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="presenters">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="name"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name">
<xs:complexType>
<xs:sequence>
<xs:sequence maxOccurs="unbounded">
<xs:element ref="first"/>
</xs:sequence>
<xs:sequence minOccurs="0">
<xs:element ref="middle"/>
</xs:sequence>
<xs:element ref="last"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<!-- Edit
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:patterrn value=""/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
End Edit -->
<xs:attribute name="title" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Mr."/>
<xs:enumeration value="Mrs."/>
<xs:enumeration value="Ms."/>
<xs:enumeration value="Miss"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="first" type="xs:string"/>
<xs:element name="middle" type="xs:string"/>
<xs:element name="last" type="xs:string"/>
</xs:schema>
【问题讨论】: