XML__XML文档声明<? ... ?>中的standalone属性

XML 专栏收录该内容
3 篇文章 0 订阅

standalone在XML里的作用

 今天在看用TdataSet生成的XML中第一行里有个standalone,不知道是什么意思,查了一下资料才知道它的作用,下面就把我了解的写下来。

    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 元素可以包含可选的属性。

    比如:

    <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema

    elementFormDefault="qualified" attributeFormDefault="unqualified">

    这表示模式中使用的元素来自名称空间。

    XML 文件使用 schema 名称空间中的 schemaLocation 属性链接到对应的模式。使用 schemaLocation 属性必须定义 schema 名称空间。所有这些定义都出现在 XML 文档的根元素中。

    语法如下:

    <root_element  schema_namespace_definition  schema_location_definition>

    下面是一个例子:

    <Books  xmlns:xs=" Books.xsd">

    先来看看一个XML文件示例(message.xml),分别用DTD和XML Schema 描述这个文件,看看它们之间的区别:

    1、使用DTD:

    <?xml version="1.0" standalone="yes"?>

    <!DOCTYPE message[

    <!ELEMENT message (to,from,body)>

    <!ELEMENT to      (#PCDATA)>

    <!ELEMENT from    (#PCDATA)>

    <!ELEMENT body    (#PCDATA)>

    ]>

    <message>

    <to>rose</to>

    <from>alex</from>

    <body>Hi,My Girl!</body>

    </message>

    2、使用XML Schema :

    message.xml:

    <?xml version="1.0" standalone="no"? >

    <message xmlns=http://www.example.com

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

    xsi:schemaLocation=" message.xsd">

    <to>Rose</to>

    <from>Alex</from>

    <body>Hi,My Girl!</body>

    </message>

    message.xsd:

    <?xml version="1.0"?>

    <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema

    targetNamespace=http://www.example.com

    xmlns="" elementFormDefault="qualified">

    <xs:element name="message">

    <xs:complexType>

    <xs:sequence>

    <xs:element name="to" type="xs:string"/>

    <xs:element name="from" type="xs:string"/>

    <xs:element name="body" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

    </xs:element>

    </xs:schema>

  • 7
    点赞
  • 1
    评论
  • 2
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值