&,?,? 这些字符放到XML中,如果不做特殊处理,就会有错误产生。比如下面的XML:
<item>&</item>
在IE 浏览器,以及一些解析用的DOM中解析这个片段,就会产生错误。
在W3C的技术规范中,也可以看到这样的字符不允许出现:
http://www.w3.org/TR/2001/REC-xml-c14n-20010315
比如:对 Text Nodes 允许的字符有如下要求: the string value, except all ampersands are replaced by &, all open angle brackets (< ) are replaced by <, all closing angle brackets (> ) are replaced by >, and all #xD characters are replaced by 
.
由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:
比如DTD文件中增加以下部分:
<!-- PERCENT SIGN -->
<!ENTITY amp "&#38;">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "®">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "™">
并在XML中定义这个XML文件需要这个DTD支持:
<!DOCTYPE HeadCount SYSTEM "eula.dtd">
这样在XML文件中出现 & ? ? 这类特殊字符就不会再报错了。
有关更多的特殊字符可以参看:
http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt
那里罗列的特殊字符有近200个。
这里实体定义主要是指:
<!-- REG TRADE MARK SIGN -->
<!ENTITY haha "哈哈"> 那么xml中 <a>&haha;</a> 便解析成为:<a>哈哈</a>(当然了页面只是显示:“哈哈”).
但是我在schema中还没有发现实体的定义方式,如果各位大仙知道怎么在schema中定义实体,请告诉我
分享到:
相关推荐
3. 强制性:Schema可以设定元素和属性的必需性,而DTD不能。 4. 命名空间支持:Schema支持命名空间,这对于大型复杂系统中避免元素名冲突至关重要,而DTD不支持。 5. 复杂性:DTD更适合简单的结构定义,而Schema则...
1. **元素声明**:DTD定义了元素的类型,如元素是否可选,是否可以包含其他元素或文本。例如,`<!ELEMENT elementname (contentmodel)>`,其中`elementname`是元素名,`contentmodel`定义了元素的内容模型,可以是...
这个DTD定义了一个`bookstore`元素,它包含一个或多个`book`元素。每个`book`元素包含`title`、`author`和`price`元素,这些元素都只能包含文本数据(`#PCDATA`)。 **XML Schema** XML Schema是W3C推出的更现代、...
Schema 文件可以定义元素、属性、实体等内容,并且可以使用 XPath 语言来约束 XML 文档的内容。 3.1. Schema 文件的优点 Schema 文件相比 DTD 有很多优点,例如:支持更多的数据类型、支持名称空间、支持 XPath ...
XML DTD(Document Type Definition)和XML Schema是两种主要的XML语义约束机制,用于定义XML文档的结构和数据类型。 XML DTD是最早的XML文档类型定义方式,它使用一套预定义的元素和属性来描述XML文档的结构。DTD...
- **命名规则**:元素、属性和实体的名称必须遵循XML的命名规则,不能以数字开头,不能包含空格、冒号等特殊字符。 5. **替代DTD:XML Schema和 Relax NG** - **XML Schema**:XML Schema是W3C推荐的XML文档类型...
在实际应用中,DTD 通常与 XML Schema 和 Relax NG 等其他更现代的结构化语言一起被考虑,以提供更强大和灵活的文档定义能力。学习和实践 DTD,能够帮助你更好地理解和处理 XML 文档的结构和验证。
DTD通过一系列的元素声明、属性声明和实体定义,确保XML文档遵循特定的规则。例如,它可以定义元素是否可以嵌套,哪些属性是必需或可选的。DTD通常以外部或内部的形式附加到XML文档中。 Schema是另一种更现代的验证...
6. **RSS/Atom DTD**:RSS(Really Simple Syndication)和Atom是两种常见的新闻聚合格式,它们各自的DTD定义了订阅源的结构,包括文章标题、摘要、链接等元素。 了解和掌握DTD对于XML文档的编写和解析至关重要,...
1. **类型系统**:XML Schema引入了类型系统,允许为元素和属性定义更精确的数据类型,如整数、浮点数、日期等,而DTD只能通过实体和notations进行基本的数据验证。 2. **复杂数据模型**:XML Schema支持复杂类型,...
DTD定义了`session-factory`、`mapping`等元素,用来描述数据库连接信息、实体类映射等。例如,`<class>`元素用于指定一个Java类与数据库表的映射,`<property>`元素定义类的属性如何映射到数据库字段。 在实际开发...
3. **定义实体**:在某些情况下,你可能需要定义实体,比如常用的符号或重复的文本。例如,定义一个表示版权符号的实体: ```dtd <!ENTITY copyright "Copyright ©"> ``` 4. **引用DTD**:在你的XML文档中...
- 如果XML文件不符合DTD定义,解析器会抛出错误,帮助开发者发现并修复问题。 4. **DTD与XSD的区别** - 虽然DTD是XML schema的一种早期形式,但它相对较弱,不支持复杂的数据类型和命名空间。 - XSD(XML Schema...
### XML与DTD详解 #### 一、XML简介 XML(Extensible Markup Language)是一种非常重要...通过使用XML来存储数据,结合DTD定义数据结构,可以有效地保证数据的一致性和完整性。这对于跨系统数据交换和管理至关重要。
DTD定义了一个模式,使开发者可以限制XML文档的数据类型和结构,从而避免数据输入错误。XML文档必须遵循其关联的DTD,否则会被认为是无效的。 1. **DTD基本概念**: - **元素(Elements)**:XML文档的核心组成...
DTD.chm包含了关于DTD的详细指南,涵盖了元素声明、属性定义、实体引用等内容,虽然现在Schema和 Relax NG等更现代的验证机制已经出现,但了解DTD的基本原理仍然有助于理解XML文档的验证过程。 这些文档合集为Java...
DTD,全称是Document Type Definition,它是XML(可扩展标记语言)文档的一个重要组成部分,用于定义XML文档的结构和元素。DTD通过声明元素、属性、实体以及元素间的关系,为XML文档提供了一套规则,确保了文档的...
- `EMPTY`:表示该元素不能包含任何子元素或字符数据。 **示例**: ```xml <!ELEMENT book (#PCDATA)> <!ELEMENT book EMPTY> ``` ##### 2. 定义元素内容 **语法格式**: ``` <!ELEMENT 元素名 (子元素列表)> ``...
DTD在这里同样起到了验证配置的作用,比如`<hibernate-configuration>`、`<session-factory>`和`<mapping>`标签分别定义了配置的整体结构、会话工厂和实体映射文件。 在SSH框架中使用DTD的意义在于,它提供了对配置...