XML-->DTD&Schema Notes
The need for XML “schemas”
- Introduction
DTD is the abbreviation for "Document Type Definition" to define the legal building blocks of an XML document with a list of legal elements and attributes, which can be defined inline an XML doc or as an external reference. With the DTD, your can verify the data that you receive from the outside world is valid. Elements/attributes names in XML are case-sensitive, so DTD must be case-sensitive also!
Parsing XML Documents
– Valid document conforms to DTD
» Document is then well formed, by definition
» Documents can be well formed, but not valid
Example: inline example
<?xml version="1.0"?> <? PI ?>
<!DOCTYPE note [ // defines that the root element of this document is note
<!ELEMENT note (to,from,heading,body)> //defines that the note element contains four elements: "to,from,heading,body"
<!ELEMENT to (#PCDATA)> // defines the to element to be of type "#PCDATA"
<!ELEMENT from (#PCDATA)> Parsable character data
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note> Root element
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>
external example:
use <!DOCTYPE note SYSTEM "note.dtd"> to replace the inline DTD block
SYSTEM indicates its a private DTD (not for public distribution)
- Building Block
Elements, Attributes, Entities, CDATA, PCDATA
PCDATA should not contain any characters like &, > or < which should be represented by &, < and > entities, respectively.
CDATA will not be parsed by a parser.
elements:
- Declaring Elements:<!ELEMENT element-name category>
- Empty elements: <!ELEMENT oven EMPTY> <oven/>
- Elements with only parsed character data: <!ELEMENT from (#PCDATA)>
- can contain any combination of parable data: <!ELEMENT note ANY> replace by specific content now.
- Elements with one or more children: <!ELEMENT element-name (child1,child2,…)>
- Only one occurrence: <!ELEMENT element-name (child-name)>
- one or more occurrence: <!ELEMENT element-name (child-name+)>
- zero or more occurrence: <!ELEMENT element-name (child-name*)>
- zero or one occurrence: <!ELEMENT element-name (child-name?)>
- either or occurrence: <!ELEMENT note (to,from,header,(message|body))>
- mixed content: <!ELEMENT note (#PCDATA|to|from|header|message)*>
5:consecutively; 11: no specific sequence
attributes:
<!ATTLIST element-name attribute-name attribute-type attribute-value>
Declaration: <!ATTLIST payment typeCDATA "check">
XML example: <payment type="check" />
|
Types |
Description |
|---|---|
|
CDATA (strings) |
The value is character data except <, >, &, ’and ” |
|
(en1|en2|..) enumerated |
The value must be one from an enumerated list |
|
ID tokenized most restrictive |
The value is a unique id--> Uniquely identifies an element |
|
IDREF tokenized |
The value is the id of another element--> Point to element with ID |
|
IDREFS tokenized |
The value is a list of other ids consistency to ID |
|
NMTOKEN |
The value is a valid XML name |
|
NMTOKENS |
The value is a list of valid XML names |
|
ENTITY tokenized |
The value is an entity |
|
ENTITIES tokenized |
The value is a list of entities |
|
NOTATION |
The value is a name of a notation |
|
xml: |
The value is a predefined xml value |
value: the value of the attribute
Required:
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number="5677" />
Invalid XML:
<person />
Implied:
<!ATTLIST contact fax CDATA #IMPLIED>
Valid XML:
<contact fax="555-667788" />
Valid XML:
<contact />
Fixed:
<!ATTLIST sender company CDATA #FIXED "Microsoft">
Valid XML:
<sender company="Microsoft" />
Invalid XML:
<sender company="W3Schools" />
Enumerated attribute values:
<!ATTLIST payment type (check|cash) "cash">
XML example:
<payment type="check" />
or
<payment type="cash" />
elements vs attributes:
There is no rule for when to use elements or attributes
Store data in element is better and use attribute to provide information not relevant to data.
Metadata (data about data) should be stored as attributes, and that data itself should be stored as elements.
Entities:
internal entities: <!ENTITY entity-name "entity-value">
DTD Example:
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools.">
XML example:
<author>&writer;©right;</author>
external entities:<!ENTITY entity-name SYSTEM "URI/URL">
DTD Example:
<!ENTITY writer SYSTEM "http://www.w3schools.com/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3schools.com/entities.dtd">
XML example:
<author>&writer;©right;</author>
- A General XML Validator - Errors in XML documents will stop your XML program.
To help you check your xml files, you can syntax-check any XML file here.
Semantic Web
XML-->DTD&Schema Notes的更多相关文章
- JavaScripts学习日记——XML DTD Schema
今日关键词: XML DTD Schema 1.XML 1 XML的概述 1.1 什么是XML XML全称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和 ...
- XML Dtd Schema
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 整体比较: XML Schema符合XML语法结构. DOM.SAX等XML API很容易解析出XML Schem ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- XML DTD跟SCHEMA约束 语法了解
dtd语法 元素: <!Element 元素名称 数据类型|包含内容> 数据类型: #PCDATA:普通文本 使用的时候一般用()引起来 包含内容: 该元素下可以出现哪些元素, 用()引起 ...
- Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题
Eclipse引入自定义XML约束文件(DTD,SCHEMA)问题 1:说明 使用Eclipse 编写xml文件的约束文件的,包括DTD约束文件,Schema约束文件的时候, 我们也需要接受eclip ...
- XML约束——Schema约束
XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...
- XML的Schema约束
XSD文档至少要包含:schema根元素和XML模式命名空间的定义.元素定义.需要注意的是XSD中必须定义一个且只能定义一个schema根元素,根元素中包括模式的约束,XML模式命名空间的定义,其他命 ...
- XML和Schema
2017-11-03 19:33:56 XML:Extensible Markup Language,也就是可扩展标记语言.XML工具使处理和转化信息变得十分容易和方便. XML和HTML格式是古老的 ...
- XML——DTD
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
随机推荐
- 《小白的CFD之旅》招募写手
<小白的CFD之旅>系列招募写手. 由于工作繁忙,<小白的CFD之旅>系列更新缓慢,现招募志愿者写手.这是一个分享平台,欢迎各位愿意分享自己CFD学习经历的朋友们. <小 ...
- MVC架构学习之Smarty学习——病来而蔫
前两天是五一小长假,而每次假期都想着如何如何刻苦一番,往往是自作多情.. 当然这次是有小病在身,多个借口吧. 一有病就蔫的不行...要锻炼了啊,脚估计也差不多了,游泳试试吧这周. 这次学习Smarty ...
- POJ3422 Kaka's Matrix Travels[费用流]
Kaka's Matrix Travels Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9522 Accepted: ...
- NYOJ 743
复杂度 描述 for(i=1;i<=n;i++) for(j=i+1;j<=n;j++) for(k=j+1;k<=n;k++) operation; 你知道 operation 共 ...
- 第47课 Qt中的调色板
1. QPalette类 (1)QPalette类提供了绘制QWidget组件的不同状态所使用的颜色. (2)QPalette对象包含了3个状态的颜色描述 ①激活颜色组(Active):组件获得焦点使 ...
- BOM浏览器对象模型
访问和操作浏览器窗口的模型称为浏览器对象模型BOM(Browser Object Model). BOM整体对象图. 核心是window对象: 以下有特殊双重身份: window对象既是ECMAScr ...
- jquery 停止动画 stop的几种用法
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 云计算之路-阿里云上:13:43-13:44之间RDS故障影响了全站的正常访问
抱歉!13:43-13:44之间,由于阿里云RDS(云数据库)出现2分钟突发故障,影响了全站的正常访问,给大家带来了麻烦,望大家谅解! 故障期间,应用程序日志中记录的错误信息如下: System.Da ...
- 万能的林萧说:一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。
来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,"招人啦." 然某群友曰,"群主,俺想去." LZ回之,"你 ...
- Dribbble for windows phone 8
正如你看到文章的标题所示.这是一个Dribbble 基于windows phone 8的客户端.[开源项目] 对于大部分的开发人员来说很少关注Dribbble[不妨打开看看或是注册一个player账号 ...