zoukankan      html  css  js  c++  java
  • xml学习总结(三)

    复杂Schema

    扩展包含简单内容的复杂类型

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <!-- 定义一个book_Type类型 -->
        <xs:complexType name="book_Type">
            <xs:simpleContent>
                <!-- 从token类型派生出book_Type类型 -->
                <xs:extension base="xs:token">
                    <!-- 增加一个name属性 -->
                    <xs:attribute name="name" type="xs:token" use="required"/>
                    <!-- 增加一个isbn属性 -->                
                    <xs:attribute name="isbn" use="required">
                        <!-- 使用simpleType子元素定义isbn属性的类型 -->
                        <xs:simpleType>
                            <xs:restriction base="xs:int">
                                <xs:totalDigits value="8"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
        <!-- 定义一个extended_book_Type类型 -->
        <xs:complexType name="extended_book_Type">
            <xs:simpleContent>
                <!-- 从book_Type类型派生出extended_book_Type类型 -->
                <xs:extension base="book_Type">
                    <!-- 增加price属性 -->
                    <xs:attribute name="price" use="required">
                        <!-- 使用simpleType子元素定义price属性的类型 -->
                        <xs:simpleType>
                            <xs:restriction base="xs:decimal">
                                <xs:maxExclusive value="100"/>
                                <xs:minExclusive value="0"/>
                                <xs:fractionDigits value="2"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
        <!-- 定义book元素,其类型是extended_book_Type -->
        <xs:element name="book" type="extended_book_Type"/>
    </xs:schema>

    限制包含简单类型的复杂类型

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <!-- 定义一个book_Type类型 -->
        <xs:complexType name="book_Type">
            <xs:simpleContent>
                <xs:extension base="xs:token">
                    <xs:attribute name="name" type="xs:token" use="required"/>
                    <xs:attribute name="isbn">
                        <!-- 使用simpleType子元素定义isbn属性的类型 -->
                        <xs:simpleType>
                            <xs:restriction base="xs:int">
                                <xs:totalDigits value="8"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
        <!-- 定义一个restricted_book_Type类型 -->
        <xs:complexType name="restricted_book_Type">
            <xs:simpleContent>
                <xs:restriction base="book_Type">
                    <!-- 定义该元素的内容只能是如下枚举值之一 -->
                    <xs:enumeration value="疯狂Java体系"/>
                    <xs:enumeration value="疯狂Java实训教程"/>        
                    <xs:attribute name="name" use="required">
                        <!-- 使用simpleType重新限定name属性的类型 -->
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:maxLength value="14"/>
                                <xs:minLength value="4"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                    <!-- 删除原来的isbn属性 -->
                    <xs:attribute name="isbn" use="prohibited"/>
                </xs:restriction>
            </xs:simpleContent>
        </xs:complexType>
        <!-- 定义book元素,其类型是restricted_book_Type -->
        <xs:element name="book" type="restricted_book_Type"/>
    </xs:schema>

    限制包含子元素的类型

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <!-- 定义一个book_Type类型,该类型下包含2个有序子元素 -->
        <xs:complexType name="book_Type">
            <!-- 使用sequence定义2个子元素 -->
            <xs:sequence>
                <xs:element name="name" type="xs:token"/>
                <!-- 如果派生类型想删除如下子元素,必须指定minOccurs="0" -->
                <xs:element name="price" type="xs:decimal" minOccurs="0"/>
            </xs:sequence>
            <!-- 为该类型定义2个属性 -->        
            <xs:attribute name="isbn" type="xs:int"/>
            <xs:attribute name="publish-date" type="xs:date"/>
        </xs:complexType>
        <!-- 定义restrict_book_Type类型 -->
        <xs:complexType name="restrict_book_Type">
            <xs:complexContent>
                <!-- 通过限制book_Type类型派生新类型 -->
                <xs:restriction base="book_Type">
                    <xs:sequence>
                        <!-- 为name元素的类型增加进一步约束 -->
                        <xs:element name="name">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:maxLength value="20"/>
                                    <xs:minLength value="4"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <!-- 不再定义price元素,即可认为删除了该元素 -->
                    </xs:sequence>
                    <!-- 为publish-date属性的类型增加进一步约束 -->
                    <xs:attribute name="publish-date">
                        <xs:simpleType>
                            <xs:restriction base="xs:date">
                                <xs:maxExclusive value="2009-05-12"/>
                                <xs:minExclusive value="2007-05-12"/>
                            </xs:restriction>
                        </xs:simpleType>            
                    </xs:attribute>
                    <!-- 删除isbn属性 -->
                    <xs:attribute name="isbn" use="prohibited"/>
                </xs:restriction>
            </xs:complexContent>
        </xs:complexType>    
        <xs:element name="book" type="restrict_book_Type"/>
    </xs:schema>

    扩展包含子元素的类型

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <!-- 定义一个book_Type类型,该类型下包含2个有序子元素 -->
        <xs:complexType name="book_Type">
            <!-- 使用sequence定义2个子元素 -->
            <xs:sequence>
                <xs:element name="name" type="xs:token"/>
                <xs:element name="price" type="xs:decimal"/>
            </xs:sequence>
            <!-- 为该类型定义2个属性 -->        
            <xs:attribute name="isbn" type="xs:int"/>
            <xs:attribute name="publish-date" type="xs:date"/>
        </xs:complexType>
        <!-- 定义extend_book_Type类型 -->
        <xs:complexType name="extend_book_Type">
            <xs:complexContent>
                <!-- 通过扩展book_Type类型派生新类型 -->
                <xs:extension base="book_Type">
                    <xs:sequence>
                        <!-- 新增定义2个子元素 -->
                        <xs:element name="type" type="xs:token"/>
                        <xs:element name="targetMarket" type="xs:token"/>
                    </xs:sequence>
                    <!-- 新增一个publish-house属性 -->
                    <xs:attribute name="publish-house" type="xs:token"/>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>    
        <xs:element name="book" type="extend_book_Type"/>
    </xs:schema>

     限制混合内容类型

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <!-- 定义一个book_Type类型,该类型下包含2个有序子元素,指定它是混合内容类型 -->
        <xs:complexType name="book_Type" mixed="true">
            <!-- 使用sequence定义2个子元素 -->
            <xs:sequence>
                <xs:element name="name" type="xs:token"/>
                <!-- 如果派生类型想删除如下子元素,必须指定minOccurs="0" -->
                <xs:element name="price" type="xs:decimal" minOccurs="0"/>
            </xs:sequence>
            <!-- 为该类型定义2个属性 -->        
            <xs:attribute name="isbn" type="xs:int"/>
            <xs:attribute name="publish-date" type="xs:date"/>
        </xs:complexType>    
        <!-- 定义mixed_book_Type类型,依然是混合内容类型 -->
        <xs:complexType name="mixed_book_Type" mixed="true">
            <xs:complexContent>
                <!-- 通过限制book_Type类型派生新类型 -->
                <xs:restriction base="book_Type">
                    <xs:sequence>
                        <!-- 为name元素的类型增加进一步约束 -->
                        <xs:element name="name">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:maxLength value="20"/>
                                    <xs:minLength value="4"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <!-- 不再定义price元素,即可认为删除了该元素 -->
                    </xs:sequence>
                    <!-- 删除isbn属性 -->
                    <xs:attribute name="isbn" use="prohibited"/>
                </xs:restriction>
            </xs:complexContent>
        </xs:complexType>    
        <!-- 定义restrict_book_Type类型 -->
        <xs:complexType name="restrict_book_Type">
            <xs:complexContent>
                <!-- 通过限制book_Type类型派生新类型 -->
                <xs:restriction base="book_Type">
                    <xs:sequence>
                        <!-- 为name元素的类型增加进一步约束 -->
                        <xs:element name="name">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:maxLength value="20"/>
                                    <xs:minLength value="4"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <!-- 不再定义price元素,即可认为删除了该元素 -->
                    </xs:sequence>
                    <!-- 为publish-date属性的类型增加进一步约束 -->
                    <xs:attribute name="publish-date">
                        <xs:simpleType>
                            <xs:restriction base="xs:date">
                                <xs:maxExclusive value="2009-05-12"/>
                                <xs:minExclusive value="2007-05-12"/>
                            </xs:restriction>
                        </xs:simpleType>            
                    </xs:attribute>
                    <!-- 删除isbn属性 -->
                    <xs:attribute name="isbn" use="prohibited"/>
                </xs:restriction>
            </xs:complexContent>
        </xs:complexType>
        <xs:element name="book" type="restrict_book_Type"/>
    </xs:schema>

    扩展混合内容类型

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified" attributeFormDefault="unqualified">
        <!-- 定义一个book_Type类型,该类型下包含2个互斥子元素 -->
        <xs:complexType name="book_Type" mixed="true">
            <!-- 使用choice定义2个子元素 -->
            <xs:choice>
                <xs:element name="name" type="xs:token"/>
                <xs:element name="price" type="xs:decimal"/>
            </xs:choice>
        </xs:complexType>
        <!-- 定义extend_book_Type类型,必须保留mixed="true" -->
        <xs:complexType name="extend_book_Type" mixed="true">
            <xs:complexContent>
                <!-- 通过扩展book_Type类型派生新类型 -->
                <xs:extension base="book_Type">
                    <xs:choice>
                        <!-- 新增定义2个子元素 -->
                        <xs:element name="type" type="xs:token"/>
                        <xs:element name="targetMarket" type="xs:token"/>
                    </xs:choice>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>    
        <xs:element name="book" type="extend_book_Type"/>
    </xs:schema>
  • 相关阅读:
    lua table
    lua basic
    lua5.4 coroutine的通俗理解
    HarmonyOS实战—实现双击事件
    HarmonyOS实战—单击事件的四种写法
    HarmonyOS实战—实现单击事件流程
    苹果CMS对接公众号教程
    Spring快速入门
    YYCMS搭建影视网站教程
    分享几个开源Java写的博客系统
  • 原文地址:https://www.cnblogs.com/nolonely/p/3496769.html
Copyright © 2011-2022 走看看