在XML里的XSD和DTD以及standalone的使用

有关XML结构中的XSD和DTD以及standalone的使用

XmlDeclaration declare= document.CreateXmlDeclaration("1.0", "utf-8", "yes"); yes为standalone的值,

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:

  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. ] >

2、message的DTD结构定义:

  1. <message>
  2. <to>rose</to>
  3. <from>alex</from>
  4. <body>Hi,My Girl!</body>
  5. </message>

3、使用XML Schema :

message.xml:

  1. <?xml version="1.0" standalone="no"? >
  2. <message xmlns=http://www.example.com xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=" message.xsd">
  3. <to>Rose</to>
  4. <from>Alex</from>
  5. <body>Hi,My Girl!</body>
  6. </message>

4、message的xsd XML Schema结构定义:

message.xsd:

  1. <?xml version="1.0"?>
  2. <xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema targetNamespace=http://www.example.com xmlns="" elementFormDefault="qualified">
  3. <xs:element name="message">
  4. <xs:complexType>
  5. <xs:sequence>
  6. <xs:element name="to" type="xs:string"/>
  7. <xs:element name="from" type="xs:string"/>
  8. <xs:element name="body" type="xs:string"/>
  9. </xs:sequence>
  10. </xs:complexType>
  11. </xs:element>
  12. </xs:schema>
时间: 2024-08-08 08:41:40

在XML里的XSD和DTD以及standalone的使用的相关文章

web.xml文件的 xsd引用(或dtd引用)学习

1. 为什么web.xml会有不同版本的xsd引用: JDK依赖变化: 或 servlet(JAVA EE)自身API的改变: 2. 为什么会有dtd和xsd两个版本的区别 我是在这篇文章中看到的,作者似乎拷贝了一段API说明: There are two ways to specify the schema for a the web.xml file (Deployment Descriptor). DTD - Document Type Definition XSD - XML Schem

关于xml的一些知识,DTD,XSD

DTD 文档类型定义(Document Type Definition)是一套关于标记符的语法规则.它是标准通用标记语言和 可扩展标记语言1.0版规格的一部分,是文档的验证机制.文档类型定义是一种保证标准通用标记语言.可扩展标记语言文档格式正确的有效方法,可通过比较文档和文档类型定义文件来看文档是否符合规范,元素和标签使用是否正确.文件实例提供应用程序一个数据交换的格式.在文档类型定义正是让标准通用标记语言.可扩展标记语言文件能成为数据交换标准,因为不同的公司只需定义好标准文档类型定义,各公司都

利用Vistual Studio自带的xsd.exe工具,根据XML自动生成XSD

利用Vistual Studio自带的xsd.exe工具,根据XML自动生成XSD 1, 命令提示符-->找到vs自带的xsd.exe工具所在的文件夹 例如: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin 注意:win7操作系统“命令提示符”要以管理员身份运行 2,将Xml文件拷贝到xsd.exe工具所在的文件夹,生成的xsd文件也将在这个文件夹中 3,在命令提示符中输入 xsd.exe test.xml, 多个xml文件以空格隔

android string.xml里的空格字符

在string.xml定义字符串的时候常常要用到空格, 直接用键盘敲的话不知道是几个空格,常常看错了,导致误删. 假设用 来替代空格的话,就好非常多. 另外使用%1$s,%1$d能够在一个字符串里定义多个统配字符. android string.xml里的空格字符,布布扣,bubuko.com

php 判断 xml 里是否存在某个节点

参考网址:http://blog.csdn.net/crazyboy2005/article/details/6114454 DOMDocument中,怎样判断某节点是否存在呢? /* $xml->getElementsByTagName("TARGET");返回的是一个DOMNodeList对象, 而DOMNodeList对象的定义: DOMNodeList { /* Properties */ readonly public int $length ; /* Methods

怎样用Google APIs和Google的应用系统进行集成(8)----怎样把Google Blogger(博客)的JSON Schema转换成XML的Schema(XSD)?

在Google RESTFul API中,Google Blogger API(Google博客API)应该和我们的生活离得近期:由于差点儿非常多人每天都在看博客,都在写博客,都听说过博客.在前面的Google的应用系统进行集成(5)和Google的应用系统进行集成(6)的系列文章中.我们提到了怎样把Google Calendar和Google Tasks的JSON Schema转换成XML的XSD的Schema.从博客的訪问量来看,还是有非常多志同道合的朋友们对这个比較感兴趣,因此,这个章节.

pom.xml里有红叉报错的解决办法

pom.xml里有红叉报错的解决办法一: 1.把鼠标点在报的错上发现pom.xml报如下错误: Multiple annotations found at this line: - Failure to transfer org.slf4j:slf4j-log4j12:jar:1.7.21 from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempte

解决xml中mybatis等的dtd提示问题

1.找到该xml中dtd的位置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 2.按住ctrl键,将鼠标移到 "http://myb

web.xml里&lt;init-param&gt;报错

Description ResourcePathLocationType cvc-complex-type.2.4.a: Invalid content was found starting with element 'init-param'. One of '{"http://java.sun.com/xml/ns/javaee":enabled, "http://java.sun.com/xml/ns/javaee":async-supported, "