`

子元素的约束

XML 
阅读更多
定义子元素的顺序:
1、任意顺序<xs:all>:
  指定子元素在其父元素中出现时,顺序任意,但每种子元素最多只能出现一次。
例:
Schema文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="book">
        <xs:complexType>
            <xs:all>
                <xs:element name="id" type="xs:integer"/>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="author" type="xs:string"/>
                <xs:element name="price" type="xs:decimal"/>
            </xs:all>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML文档:
<?xml version="1.0"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="011.xsd">
    <author>李四</author>
    <name>XML学习天下</name>
    <id>001</id>
    <price>88.50</price>
</book>

2、特定顺序<xs:sequence>:
  指定子元素在其父元素中出现时,顺序必须与在Schema文档中定义的顺序一致。
例:
Schema文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="book">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="id" type="xs:integer"/>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="author" type="xs:string"/>
                <xs:element name="price" type="xs:decimal"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema> 

XML文档:
<?xml version="1.0"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="009.xsd">
    <id>001</id>
    <name>XML学习天下</name>
    <author>李四</author>
    <price>88.50</price>
</book>

3、选择顺序<xs:choice>:
  指定在多种子元素中,只能有一种出现。
例:
Schema文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="book">
        <xs:complexType>
            <xs:choice>
                <xs:element name="id" type="xs:integer"/>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="author" type="xs:string"/>
                <xs:element name="price" type="xs:decimal"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML文档:
<?xml version="1.0"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="012.xsd">
    <name>XML学习天下</name>
</book>

4、顺序嵌套:
  <xs:sequence>可以嵌套<xs:choice>。
例:
Schema文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="book">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element name="id" type="xs:integer"/>
                    <xs:element name="name" type="xs:string"/>
                </xs:choice>
                <xs:choice>
                    <xs:element name="author" type="xs:string"/>
                    <xs:element name="price" type="xs:decimal"/>
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML文档:
<?xml version="1.0"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="013.xsd">
    <id>001</id>
    <price>88.50</price>
</book>

说明:这三种指示符用来定义子元素在其父元素中出现的顺序。

定义子元素出现的次数:
格式:
<xs:element name="元素名称" type="元素类型" minOccurs="最小值" maxOccurs="最大值"/>

说明:
minOccurs:
  定义子元素最少出现的次数,最小可以为0,表示不出现。
maxOccurs:
  定义子元素最多出现的次数,最大可以为unbounded,表示不限制出现次数。
例:
Schema文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="book">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="id" type="xs:integer" minOccurs="0" maxOccurs="0"/>
                <xs:element name="name" type="xs:string" maxOccurs="1"/>
                <xs:element name="author" type="xs:string" minOccurs="1" maxOccurs="3"/>
                <xs:element name="price" type="xs:decimal"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XML文档:
<?xml version="1.0"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="014.xsd">
    <name>XML学习天下</name>
    <author>张三</author>
    <author>李四</author>
    <author>赵五</author>
    <price>88.50</price>
</book>

注:
  在没有指定minOccurs和maxOccurs的情况下,其值默认值都为1,表示必须出现一次,且只能出现一次。
  <xs:all>任意顺序指示符,不可以将其内部声明的元素的maxOccurs设为大于1的数值。
分享到:
评论

相关推荐

    DTD约束 —— Xml文档 约束技术 学习笔记

    - 选择元素模型:元素可以有多个可能的子元素,但只能选择其中之一,如`&lt;!ELEMENT item (title | author | date)?&gt;`表示item元素可以有title、author或date,但不是必需的。 - 混合内容模型:元素可以同时包含文本和...

    XML文档约束之Schema

    3. `&lt;complexType&gt;`:定义复杂数据类型,可以包含其他元素、属性或者子元素的组合。例如,定义一个包含`firstName`和`lastName`两个子元素的复杂类型: ```xml ``` 4. `&lt;simpleType&gt;`:用于定义简单...

    Cadence中文教程\约束管理器分册

    - ECSET(Electronic Constraint Set)是一组约束的集合,可以应用于特定的网络或设计元素。 **5.2 指定ECSET给网络** - 将创建的ECSET应用于具体的网络,以实施所需的约束条件。 **5.3 不考虑ECSET的缺省约束值*...

    Allegro中的约束规则设置V1.2.pdf

    这通常涉及将约束规则与网络、层或其他设计元素关联起来。 例如,在处理DDR2设计时,用户可能需要确保所有相关的线路都遵循特定的约束规则。这可以通过在“Assignment table”中指定每个网络或对象所需的约束规则来...

    Schama —— Xml文档约束技术 学习笔记

    这使得我们可以对XML文档的结构进行严格的控制,比如限制某个元素只能包含特定类型的子元素。 2. **数据类型支持**:不同于XML DTD(Document Type Definition),XML Schema提供了丰富的内置数据类型,如整数、...

    差分约束系统例题详解

    在这个例题中,差分约束系统被用来解决一个序列子序列的约束条件问题。 题目描述了一个序列 a[1], a[2], ..., a[n],并给出了若干子序列的和小于或大于某个值 ki 的约束条件。关键在于如何将这些约束条件转化为适合...

    MyBatis3DTD约束

    它可以包含id、constructor、property、association、collection等子元素,分别对应Java对象的属性、构造器参数、一对一关系、一对多关系。 4. **select**、**insert**、**update**、**delete**:这些元素定义了SQL...

    OSG绘制约束线

    在OpenSceneGraph (OSG) 中,"OSG绘制约束线"是指利用特定的几何和图形技术来定义和实现对场景图(Scene Graph)中可视元素的裁剪或编辑。OpenSceneGraph是一个开源的高性能3D图形库,广泛应用于科学可视化、游戏...

    BPMN约束

    BPMN约束是针对业务流程模型中各个元素间关系和属性的规则限定,确保流程的合理性和正确性。下面将详细介绍BPMN约束的基本知识点: 1. 活动(Activity)的约束: 活动是流程中的一个基本构造块,可以是任务(Task)...

    DTD约束文档

    2. **元素声明**:定义XML文档中的各个元素,比如`&lt;web-app&gt;`、`&lt;servlet&gt;`、`&lt;servlet-mapping&gt;`等,并规定元素可以包含哪些子元素,以及它们出现的次数。 3. **属性声明**:定义元素可以接受的属性及其值的类型,...

    06 React表单详解 约束性和非约束性组件 以及获取表单的内容

    - `select`用于下拉选择框,可以包含多个`option`子元素。 - `textarea`用于多行文本输入,常用于长文本编辑。 **4. 获取表单内容** 在React中,获取表单内容主要依赖于约束性组件的`state`或非约束性组件的`ref`...

    XML应用开发(软件品牌)-1期 2.4 案例分析-DTD中元素的内容格式.doc

    在XML文档的实际应用中,如果试图在`姓名`元素内添加子元素,如`姓`和`名`,这将违反DTD的约束,因为`姓名`元素的内容模型仅允许`#PCDATA`。相反,`爱好`元素的内容模型是`ANY`,因此它可以包含子元素,如`文学`、`...

    mybatis+hibernate+sprin的DTD约束

    例如,`&lt;environments&gt;`元素用来设置数据库环境,其中包含`&lt;environment&gt;`子元素来定义具体环境的配置,如`&lt;transactionManager&gt;`和`&lt;dataSource&gt;`。通过DTD,MyBatis确保了这些配置元素的正确性,避免了因配置错误...

    差分约束系统例题详解[总结].pdf

    在这个例题中,我们面对的是一个序列的子序列约束问题,需要找到满足所有约束条件的序列解。差分约束系统的关键在于将多变量的复杂关系转化为两两之间的简单关系。 在例题中,我们有一个序列a[1], a[2], ..., a[n]...

    swift-(一行代码搞定无论多复杂的约束)AutoLayoutforiOSbyswift4

    AutoLayout是iOS应用开发中的一个强大工具,它允许开发者通过定义界面元素之间的关系来自动管理视图的布局。在Swift 4中,苹果引入了更加简洁的语法,使得使用AutoLayout变得更加直观和高效。本教程将深入探讨如何...

    对XML字段进行约束 SQL server 2005

    下面是一个简单的XML Schema示例,用于定义`Person`元素及其子元素: ```xml ``` 在这个XML Schema中: - `attributeFormDefault="unqualified"`表示属性默认为未限定。 - `...

    android_页面五大布局

    RelativeLayout允许子元素相对于其他子元素或父布局的位置进行定位。这样可以创建更复杂和灵活的布局,子元素可以通过`above`, `below`, `alignParentLeft`, `alignParentRight`等属性与相邻元素对齐。...

    Oracle约束详解

    Oracle约束是数据库设计中的关键元素,用于确保数据的完整性和一致性。在Oracle数据库系统中,约束是用来限制可以插入或更新到表中的数据类型和值。它们是预防性地确保数据质量的规则,防止意外的数据输入错误或不...

    Cadence15.5的原理图约束属性英文手册翻译

    原理图约束属性是设计过程中的核心元素,它们定义了电路元件的行为和相互关系,确保设计符合预期的电气和物理规范。这些约束通常包括电气规则、物理规则、时序约束以及特定设计流程的特定要求。理解并正确设置这些...

Global site tag (gtag.js) - Google Analytics