当我尝试验证我的XSD时,它会给出错误
S4s-elt-invalid-content.1:'#AnonType_Apps'的内容无效。 元素'序列'无效,错位或太频繁发生。
不知道应该做什么
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name ="Apps">
<xs:complexType>
<xs:attribute name ="List_Type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="new releases"/>
<xs:enumeration value="top rated"/>
<xs:enumeration value="category list"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name ="Server_IP" type="xs:string" fixed="10.144.50.55"/>
<xs:sequence>
<xs:element name ="App" minOccurs="1" maxOccurs="20">
<xs:complexType>
<xs:attribute name ="device_type" use="optinal" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="tablet"/>
<xs:enumeration value="phone"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name ="app_id" type="xs:string"/>
<xs:attribute name ="installed" type="xs:boolean" default="false"/>
<xs:sequence>
<xs:element name ="app_name" type="xs:string"></xs:element>
<xs:element name ="catogry" minOccurs="1" maxOccurs="3"></xs:element>
<xs:element name ="version" type="xs:string"></xs:element>
<xs:element name ="description" type="xs:string"></xs:element>
<xs:element name ="reviews" use="required">
<xs:complexType>
<xs:sequence>
<xs:element name ="review" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name ="reviewer_name" type="xs:string"></xs:element>
<xs:element name ="review_date">
<xs:complexType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{4}\-\d{2}\-\d{2}"/>
</xs:restriction>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name ="review_time">
<xs:complexType>
<xs:restriction base="xs:string">
<xs:pattern value="\d{2}:\d{2}:\d{}"/>
</xs:restriction>
</xs:complexType>
</xs:element>
<xs:element name ="content" type="xs:string"></xs:element>
<xs:element name ="rating">
<xs:complexType>
<xs:restriction base="xs:float">
<xs:minInclusive value="0" />
<xs:maxInclusive value="5" />
</xs:restriction>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
你的xs:sequence元素需要对complexType元素进行必要的跟踪。
您的review_date和review_time元素应该是带有限制的simpleType。
如果您修复了这些问题,那么您的xsd似乎已经过验证。
答案 1 :(得分:0)
在complexType
元素中,内容模型首先出现,属性声明最后出现。移动最外面的sequence
元素,使其成为复杂类型的第一个子元素。
您可能希望尝试使用语法识别编辑器来编辑架构文档,以提醒您注意此类问题。
此片段中的其他语法问题:
其他complexType
元素在将属性声明放在首位时具有相同的语法错误。
如果您希望rating
的类型是xs:float的限制,那么您希望它具有简单类型,而不是复杂类型。
同样适用于review_time
和review_date
。
review_time
类型上的模式不是合法的正则表达式:大括号可能包含有关子表达式(字符串匹配)的最小和/或最大出现次数的信息,有多种形式,但是它们必须包含某些内容,因此\d{}
不是一个合法的表达方式。放下空的大括号,或者如果你愿意的话,可以把它变成\d{1}
,或者说出你想要的东西。
xs:element
元素没有名为use
的属性;我想你可能想说<xs:element name="reviews" minOccurs="1" maxOccurs="1">
...
use
属性不接受值optinal
。
找一位编辑!