gpt4 book ai didi

XML 架构 : root element

转载 作者:数据小太阳 更新时间:2023-10-29 01:37:08 24 4
gpt4 key购买 nike

下面的帖子问的是如何表明一个元素是根元素一个 XML 架构:

Is it possible to define a root element in an XML Document using Schema?

我已经按照 w3schools 的 XML Schema 教程进行操作,但仍有一些问题不清楚。考虑来自 https://www.w3schools.com/xml/schema_example.asp 的示例模式 2(为方便起见转载如下)。此代码如何表示 <shiporder>是根元素?这个例子不是说所有元素作为根元素有效吗?

----------------实例------------------------ ------

<?xml version="1.0" encoding="ISO-8859-1"?>

<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>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</xample saying that all elements are valid as root elements?quantity>
<price>9.90</price>
</item>
</shiporder>

---------------------- 模式 ---------------------- -

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<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="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>

<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>

<!-- definition of complex elements -->
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="note" minOccurs="0"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="orderid" use="required"/>
</xs:complexType>
</xs:element>

</xs:schema>

在我看来,XML Schema 应该做两件事:

  1. 定义每个节点内可能发生的事情
  2. 定义每个节点可以放置的位置

这个例子似乎在#2 处失败了。有什么建议吗?

最佳答案

据我所知,任何全局定义的元素都可以用作根元素,而 XML Schema 没有指定根元素应该是什么的概念。

不过,您可以通过很好地设计 XML 模式来解决这个问题,这样只有一个全局定义的元素 - 然后只有这个元素作为根元素有效。

可以在 W3Schools 找到这方面的示例(标题使用命名类型)此示例只有一个全局定义的元素,因此只有一个可能的根元素。

关于XML 架构 : root element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8854144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com