XML包含两个同名的标记
在我的XML文档中,我有两个同名的标记,都称为item,我现在为这个文档创建了一个XML模式,考虑到我有两个同名的标记,我的XML模式准确吗 XML文档XML包含两个同名的标记,xml,Xml,在我的XML文档中,我有两个同名的标记,都称为item,我现在为这个文档创建了一个XML模式,考虑到我有两个同名的标记,我的XML模式准确吗 XML文档 <?xml version="1.0" encoding="UTF-8"?> <shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shipor
<?xml version="1.0" encoding="UTF-8"?>
<shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item> <!--First Item Tag-->
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item> <!--Second Item Tag-->
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
约翰·史密斯
奥拉诺德曼
朗格特23
4000斯塔万格
挪威
帝国滑稽剧
特别版
1.
10.90
隐藏你的心
1.
9.90
XML模式
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="shiporder">
<xs:complexType >
<xs:sequence>
<xs:element name="orderperson"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
` <xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="item"> <!--Only 1 item tag defined in the schema-->
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:stri+ng"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:integer"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
`
为了匹配XML实例,您应该在XML模式中进行一些更改
(我假设您想要声明项目
,而不是项目
)
首先,您将item
定义为shipto
的子元素,但我认为(从您的XML实例和标记的含义来看),它应该处于相同的级别:
<xs:element name="shiporder">
<xs:complexType >
<xs:sequence>
<xs:element name="orderperson"/>
<xs:element name="shipto">
...
</xs:element>
<xs:element name="item">
...
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
您还需要在shiporder
中声明该属性。应在complexType
定义中执行此操作:
<xs:element name="shiporder">
<xs:complexType >
<xs:sequence>
...
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" />
</xs:complexType>
</xs:element>
因为默认值是
1
。如果不是可选的,然后必须将其包含在XML实例中,否则它将无法验证。根据XML架构验证XML文档时是否有任何错误消息?实际上,您没有在架构中定义项
,而是项
。我得到的唯一错误消息是元素“xs:sequence”不能包含字符[children],因为该类型的内容类型仅为元素。第25行将项目固定到项目,这是否意味着架构是准确的?访问此网站,粘贴XML,它将免费为您构建XSD惊人的答案谢谢,验证期间只有一个问题我一直得到这个问题:元素“xs:sequence”不能有字符[children],因为该类型的内容类型仅为元素。表示错误在第15行-我做了您所说的所有更改,而且在我的XML文档中,我是否必须声明架构两次?这是真的。在
中不应该有任何字符。只有元素。可能有一些字符是错误的。在您粘贴到此处的XML中,有一个反勾拉克特`
就在第一个
<xs:element name="shiporder">
<xs:complexType >
<xs:sequence>
...
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="note" type="xs:string" minOccurs="0"/>