初识xsd

XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)
元素是每一个 XML Schema 的根元素。

简易元素

<xs:element name="xxx" type="yyy"/>

常用type:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time

简易元素的默认值和固定值

<xs:element name="color" type="xs:string" default="red"/>
<xs:element name="color" type="xs:string" fixed="red"/>

<xs:extension base=""> 类似继承
<xs:complexType> 自定义复杂对象
restriction 元素定义对 simpleType、simpleContent 或 complexContent 定义的约束。
extension 元素对 simpleType 或 complexType 的元素进行扩展。
sequence 元素要求组中的元素以指定的顺序出现在包含元素中。每个子元素可出现 0 次到任意次数。

abstract
一个指示器,指示在实例文档中是否可以使用复杂类型。 如果该值为 true,则元素不能直接使用该复杂类型,而是必须使用从该复杂类型派生的复杂类型。 默认值为 false。
但实际使用时发现 还是能使用
例:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="root" type="node"></xs:element>
    <xs:complexType name="complexType1"></xs:complexType>
    <xs:complexType name="complexType2"></xs:complexType>
    <xs:complexType name="complexType5" abstract="true"></xs:complexType>
    <xs:complexType name="complexType3">
        <xs:complexContent>
            <xs:extension base="complexType2">
                <xs:sequence>
                    <xs:element name="t1"></xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="complexType4">
        <xs:complexContent>
            <xs:extension base="complexType5">
                <xs:sequence>
                    <xs:element name="t1"></xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="node">
        <xs:sequence>
                <xs:element name="node1" type="complexType1"></xs:element>
                <xs:element name="node2" type="complexType2"></xs:element>
                <xs:element name="node3" type="complexType3"></xs:element>
                <xs:element name="node4" type="complexType5"></xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

但是 complexType4 明明是继承了complexType5 ,complexType5 是空的 而实际 Altova XMLSpy 生成的报文却是这样

<root xsi:noNamespaceSchemaLocation="Untitled6.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <node1/>
    <node2/>
    <node3>
        <t1>text</t1>
    </node3>
    <node4 xsi:type="complexType4">
        <t1>text</t1>
    </node4>
</root>

node4不为空,有complexType4的t1节点 望大神能解释一下

参考https://msdn.microsoft.com/zh-cn/library/ms256067(v=vs.120).aspx

发布了21 篇原创文章 · 获赞 6 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/soulonlyhlh/article/details/78051575
xsd