我不熟悉xsd,我从w3schools复制代码,
<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</quantity>
<price>9.90</price>
</item>
</shiporder>
xsd
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<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:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
我将项目的maxOccurs更改为1
<xs:element name="item" maxOccurs="1">
我在浏览器中运行xml(两个项目),它仍然打印出xml,那么xsd的用法是什么?
答案 0 :(得分:0)
我在浏览器中运行xml(两个项目),它仍然打印出xml,那么xsd的用法是什么?
XSD或XML Schema Definition提供XML的定义。要使用这样的定义,您必须使用验证处理器,例如Xerces(存在许多其他处理器)。
它的典型用例是在双方之间交换数据。为了确保数据符合他们同意的格式,他们用某种模式语言描述XML结构的格式:
最常见的是,在使用SOAP协议编写Web服务时会发现这种情况,SOAP协议通常在XSD中定义其类型。如果您通过其定义文件(通常是WSDL)导入Web服务,则可以将其自动转换为可立即使用的POJO或POCO类(表示对象模型的类),这对创建业务逻辑非常有帮助。
对于存在数据发送和接收端的任何情况,如果接收方可以在进行之前验证XML是否符合模式中定义的数据模型,那么这是一个很大的优势。假设您有一个字段birth-date
,并且发件人发送"fourth of july 1977"
,验证程序可能会引发错误,警告用户出现问题并允许系统gracefully degrade。
浏览器与模式没有任何关系,至少不会将其报告给用户,因为他们试图在他们接受的内容中保持自由,因为很多人创建的HTML不符合要求,但仍然应该以某种方式显示。
另一个显而易见的用途是标准化。例如,DocBook格式is defined in RelaxNG和OpenDocument format一样。这些在XSD中定义:XSLT(尽管是非规范性的),XSD itself,WSDL,SMIL,所有Office Open XML formats,SOAP的所有部分(此处为the envelope schema)。等等,列表很长。