A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1黑马币
本帖最后由 袁也老师 于 2015-12-27 13:41 编辑

在学XML的时候有些同学对于约束有一些疑问,来看看问答网的回答


standalone  用来表示该文件是否呼叫其它外部的文件。若值是 ”yes” 表示没有呼叫外部文件,若值是 ”no” 则表示有呼叫外部文件。默认值是 “yes”。
    这里所指的外部文件其实就是查检XML是不是有效的约束文件,或是DTD或是Schema,那这两者又有什么区别呢?
    尽管XML1.0提供了一种机制,即文档类型定义(DTD)来规范XML的格式规则。但是它天生存在一些缺点,比如,它采用了非XML的语法规则、不支持更多的数据类型、扩展性差等,为了克服这些缺点,XML Schema 出现了。W3C推荐在XML中使用XML Schema来代替DTD。
    XML Schema(模式) 跟DTD一样,也用于定义 XML 文档的约束。但它与DTD明显不同的是,XML Schema遵循XML语法规则,更好地支持数据类型以及命名空间。W3C称:XML Schema is an XML based alternative to DTD。模式在单独的文件中定义,通常扩展名为 .xsd。每个模式定义都有一个根元素 schema,该元素属于名称空间。schema 元素可以包含可选的属性。
    比如:
  1. <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema
  2.     elementFormDefault="qualified" attributeFormDefault="unqualified">
复制代码

这表示模式中使用的元素来自名称空间。
    XML 文件使用 schema 名称空间中的 schemaLocation 属性链接到对应的模式。使用 schemaLocation 属性必须定义 schema 名称空间。所有这些定义都出现在 XML 文档的根元素中。
    语法如下:
  1. <root_element  schema_namespace_definition  schema_location_definition>
复制代码
下面是一个例子:
    <Books  xmlns:xs=" Books.xsd">
    先来看看一个XML文件示例(message.xml),分别用DTD和XML Schema 描述这个文件,看看它们之间的区别:
1、使用DTD:
  1. <?xml version="1.0" standalone="yes"?>
  2.     <!DOCTYPE message[
  3.     <!ELEMENT message (to,from,body)>
  4.     <!ELEMENT to      (#PCDATA)>
  5.     <!ELEMENT from    (#PCDATA)>
  6.     <!ELEMENT body    (#PCDATA)>
  7.     ]>
  8.     <message>
  9.     <to>rose</to>
  10.     <from>alex</from>
  11.     <body>Hi,My Girl!</body>
  12.     </message>
复制代码
2、使用XML Schema :
  1. message.xml:
  2.     <?xml version="1.0" standalone="no"? >
  3.     <message xmlns=http://www.example.com
  4.     xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
  5.     xsi:schemaLocation=" message.xsd">
  6.     <to>Rose</to>
  7.     <from>Alex</from>
  8.     <body>Hi,My Girl!</body>
  9.     </message>
  10.     message.xsd:
  11.     <?xml version="1.0"?>
  12.     <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema
  13.     targetNamespace=http://www.example.com
  14.     xmlns="" elementFormDefault="qualified">
  15.     <xs:element name="message">
  16.     <xs:complexType>
  17.     <xs:sequence>
  18.     <xs:element name="to" type="xs:string"/>
  19.     <xs:element name="from" type="xs:string"/>
  20.     <xs:element name="body" type="xs:string"/>
  21.     </xs:sequence>
  22.     </xs:complexType>
  23.     </xs:element>
  24.     </xs:schema>
复制代码



深圳校区除了全国独有问答网,就业老师面试服务,还有更多神秘惊喜等着你,咨询热线:0755-66689855





1 个回复

倒序浏览
进来看看回复学点知识
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马