学习笔记——XML Schema复杂类型

复杂类型分2种:

包含简单内容的复杂类型——内容是简单类型值,并包含属性;

包含复杂内容的复杂类型——包含子元素、空元素或混合内容的元素,不管是否包含属性。

 

复杂类型定义使用<complexType.../>,其可接受如下两种子元素:

<simpleContent.../>:用于定义包含简单内容的复杂类型

<complexContext.../>:用于定义包含复杂内容的复杂类型

 

复杂类型的派生方式:

<restriction.../>:限制派生(<simpleContent.../>或<complexContext.../>的子元素);

<extension.../>:扩展派生(<simpleContent.../>或<complexContext.../>的子元素);

 

包含简单内容的复杂类型可由扩展简单类型扩展复杂类型限制包含简单内容的复杂类型而来。

即:

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

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

限制复杂类型—>包含简单内容的复杂类型

 

限制包含简单内容的复杂类型派生方式:

1:为元素内容或属性增加进一步的约束;

2:删除某些属性。

 

包含复杂内容的复杂类型可有限制anyType派生新类型扩展简单类型扩展复杂类型

 

Schema有这么一个约定:如果某个复杂类型是由现在anyType派生出来的,那么在定义该复杂类型时可以省略<complexContent.../>和<restriction.../>元素,而直接在<complexType.../>元素内使用<sequence.../>、<choice.../>、<all.../>和<attribute.../>来定义元素和属性。

 

Schema的复杂类型可由复杂类型进一步派生而来。 

 

以限制派生方式来派生新类型时,Schema对基类型中的子元素和属性的属性的处理方式是不一样的:派生类型默认会删除基类型中的所有子元素定义,但会保留其中的所有属性定义。

所以派生新类型是如果需要保留基类型的子元素,必须重新定义这些子元素,如果要删除指定属性,则定义该属性是使用use="prohibited"。

 

扩展包含子元素的类型时派生出来的新类型不可以是混合内容类型。

 

基类型中使用<all.../>定义子元素时,其通过扩展派生出来的新类型无法添加新的子元素;

即使基类型中没有使用<all.../>元素的定义子元素,在通过扩展派生新类型时也不能添加由<all.../>元素包含的子元素。

 

扩展混合内容类型派生出来的新类型必须也是混合内容类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值