`
licg1234
  • 浏览: 49888 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

dtd 能定义实体, schema不能?

    博客分类:
  • xml
阅读更多

 &,?,?  这些字符放到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 &amp;, all open angle brackets (< ) are replaced by &lt;, all closing angle brackets (> ) are replaced by &gt;, and all #xD characters are replaced by &#xD;.

 

由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:

 

比如DTD文件中增加以下部分:

 

<!-- PERCENT SIGN -->
<!ENTITY amp "&#38;#38;">
<!-- COPYRIGHT SIGN -->
<!ENTITY reg "&#x00AE;">
<!-- REG TRADE MARK SIGN -->
<!ENTITY trade "&#x2122;">

 

并在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中定义实体,请告诉我

分享到:
评论

相关推荐

    XML、DTD、Schema

    3. 强制性:Schema可以设定元素和属性的必需性,而DTD不能。 4. 命名空间支持:Schema支持命名空间,这对于大型复杂系统中避免元素名冲突至关重要,而DTD不支持。 5. 复杂性:DTD更适合简单的结构定义,而Schema则...

    DTD_Schema.rar.rar_dtd_xml_xml schema

    1. **元素声明**:DTD定义了元素的类型,如元素是否可选,是否可以包含其他元素或文本。例如,`&lt;!ELEMENT elementname (contentmodel)&gt;`,其中`elementname`是元素名,`contentmodel`定义了元素的内容模型,可以是...

    xml约束[dtd,Schema].zip

    这个DTD定义了一个`bookstore`元素,它包含一个或多个`book`元素。每个`book`元素包含`title`、`author`和`price`元素,这些元素都只能包含文本数据(`#PCDATA`)。 **XML Schema** XML Schema是W3C推出的更现代、...

    命名空间 dtd文件、Schema文件 (xsd)文件的引入1

    Schema 文件可以定义元素、属性、实体等内容,并且可以使用 XPath 语言来约束 XML 文档的内容。 3.1. Schema 文件的优点 Schema 文件相比 DTD 有很多优点,例如:支持更多的数据类型、支持名称空间、支持 XPath ...

    XML DTD,XmlSchema标准参考手册

    XML DTD(Document Type Definition)和XML Schema是两种主要的XML语义约束机制,用于定义XML文档的结构和数据类型。 XML DTD是最早的XML文档类型定义方式,它使用一套预定义的元素和属性来描述XML文档的结构。DTD...

    DTD 总结 DTD 总结 DTD 总结

    - **命名规则**:元素、属性和实体的名称必须遵循XML的命名规则,不能以数字开头,不能包含空格、冒号等特殊字符。 5. **替代DTD:XML Schema和 Relax NG** - **XML Schema**:XML Schema是W3C推荐的XML文档类型...

    DTD 教程 DTD 实例

    在实际应用中,DTD 通常与 XML Schema 和 Relax NG 等其他更现代的结构化语言一起被考虑,以提供更强大和灵活的文档定义能力。学习和实践 DTD,能够帮助你更好地理解和处理 XML 文档的结构和验证。

    XML学习文档(DTD Schema SAX DOM XSL XPATH)

    DTD通过一系列的元素声明、属性声明和实体定义,确保XML文档遵循特定的规则。例如,它可以定义元素是否可以嵌套,哪些属性是必需或可选的。DTD通常以外部或内部的形式附加到XML文档中。 Schema是另一种更现代的验证...

    几个常用的DTD

    6. **RSS/Atom DTD**:RSS(Really Simple Syndication)和Atom是两种常见的新闻聚合格式,它们各自的DTD定义了订阅源的结构,包括文章标题、摘要、链接等元素。 了解和掌握DTD对于XML文档的编写和解析至关重要,...

    XML Schema初窥

    1. **类型系统**:XML Schema引入了类型系统,允许为元素和属性定义更精确的数据类型,如整数、浮点数、日期等,而DTD只能通过实体和notations进行基本的数据验证。 2. **复杂数据模型**:XML Schema支持复杂类型,...

    struts+spring+mybatis+hibernate的dtd文件

    DTD定义了`session-factory`、`mapping`等元素,用来描述数据库连接信息、实体类映射等。例如,`&lt;class&gt;`元素用于指定一个Java类与数据库表的映射,`&lt;property&gt;`元素定义类的属性如何映射到数据库字段。 在实际开发...

    配置dtd方法截图

    3. **定义实体**:在某些情况下,你可能需要定义实体,比如常用的符号或重复的文本。例如,定义一个表示版权符号的实体: ```dtd &lt;!ENTITY copyright "Copyright &copy;"&gt; ``` 4. **引用DTD**:在你的XML文档中...

    mybatis-dtd约束文件

    - 如果XML文件不符合DTD定义,解析器会抛出错误,帮助开发者发现并修复问题。 4. **DTD与XSD的区别** - 虽然DTD是XML schema的一种早期形式,但它相对较弱,不支持复杂的数据类型和命名空间。 - XSD(XML Schema...

    xml与DTD,xml与DTD

    ### XML与DTD详解 #### 一、XML简介 XML(Extensible Markup Language)是一种非常重要...通过使用XML来存储数据,结合DTD定义数据结构,可以有效地保证数据的一致性和完整性。这对于跨系统数据交换和管理至关重要。

    DTD验证XML详解

    DTD定义了一个模式,使开发者可以限制XML文档的数据类型和结构,从而避免数据输入错误。XML文档必须遵循其关联的DTD,否则会被认为是无效的。 1. **DTD基本概念**: - **元素(Elements)**:XML文档的核心组成...

    (帮助文档大全)javaAPI帮助文档、dom4j帮助文档、Schema帮助文档、XPath文档、DTD帮助文档.rar

    DTD.chm包含了关于DTD的详细指南,涵盖了元素声明、属性定义、实体引用等内容,虽然现在Schema和 Relax NG等更现代的验证机制已经出现,但了解DTD的基本原理仍然有助于理解XML文档的验证过程。 这些文档合集为Java...

    大家经常用到的dtd文件

    DTD,全称是Document Type Definition,它是XML(可扩展标记语言)文档的一个重要组成部分,用于定义XML文档的结构和元素。DTD通过声明元素、属性、实体以及元素间的关系,为XML文档提供了一套规则,确保了文档的...

    xml中dtd总结

    - `EMPTY`:表示该元素不能包含任何子元素或字符数据。 **示例**: ```xml &lt;!ELEMENT book (#PCDATA)&gt; &lt;!ELEMENT book EMPTY&gt; ``` ##### 2. 定义元素内容 **语法格式**: ``` &lt;!ELEMENT 元素名 (子元素列表)&gt; ``...

    ssh以及各个框架配置dtd

    DTD在这里同样起到了验证配置的作用,比如`&lt;hibernate-configuration&gt;`、`&lt;session-factory&gt;`和`&lt;mapping&gt;`标签分别定义了配置的整体结构、会话工厂和实体映射文件。 在SSH框架中使用DTD的意义在于,它提供了对配置...

Global site tag (gtag.js) - Google Analytics