加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

XML Schema结构中设置默认值和固定值

(2007-04-10 23:19:27)
分类: XML
    默认值和固定值通过给空元素增加值的方式来扩展实例.如果文档中存在空的元素,模式处理器根据模式文档的定义,会插入默认值或固定值.在XSDL中,默认值和固定值分别通过default和fixed属性设置.两个属性只能出现其中之一,因为它们是互斥的.
    如果元素为空,就填入默认值.下例中,声明了city元素,并指定了默认值为"佚名".
    <xsd:element name="author" type="xsd:string" default="佚名"/>
    必须注意的是,元素声明中"空"的定义根据数据类型不同而有所不同.某些数据类型允许空值,包括string等.任何允许空字符串值的类型,元素都不会认为是空的,从而对于字符串类型元素,默认值不会被填充.相反,integer数据类型的空元素通常会被认为是空的,从而将填入默认值.此外,如果元素的xsi:nil属性被设置为true,那么就不会插入它的默认值.
    <?xml version="1.0" encoding="gb2312"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
    <xsd:element name="title" type="xsd:string"/>
    <xsd:element name="author" type="xsd:string" default="N/A" />
    <xsd:element name="price" type="xsd:integer" default="30" />
    </xsd:schema>
    元素的默认值行为见下表:
   
 情况 填充实例结果  填充之前  填充之后 
 指定值 保持原始值  <author>罗贯中</author>  <author>罗贯中</author> 
 空元素(integer) 填充值  <price></price> <price>30</price>
 空元素(string)  没有填充值 <author></author>  <author></author>
 元素为空  没有填充值 <price xsi:nil="true"/>  <price xsi:nil="true"/>
    固定值与默认值在相同的情况下添加,它们的差别仅在于如果元素拥有一个值,则该值必须和固定值相等.当模式解析器确定元素值和固定值实际上是否相等时,会考虑到元素的数据类型.price元素的数据类型为integer,所以整数1的所有形式在实例中都会被接受,包括01、+1和周围包含空白符的1.相反,对于author元素具有数据类型为string,字符串"01"是无效的,因为与字符串"1"并不相等.
    <xsd:element name="author" type="xsd:string" fixed="1"/>
    <xsd:element name="price" type="xsd:integer" fixed="1"/>
    按照以上定义,元素的固定值行为见下表:
 有效实例  无效实例
<price>1</price> <price>2</price>
<price>01</price> <author>+1</author>
<price>+1</price> <author>01</author>
<price></price> <author></author>

<price />

<author>  </author>
<authro>1</author> <author/>
 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有