XML知识点滴(6)
(引用文章,版权归作者,如需删除请联系我)
元素类型声明
n 元素类型声明不但说明了每个文档中可能存在的元素,给出了元素的名称,而且给出了元素具体的类型。
n 一个XML元素可以为空,也可以只包含字符数据,还可以有若干个子元素,而这些子元素同时又可以有它们的子元素。
n 元素类型声明采用如下的语法格式:
<!ELEMENT 元素名称 元素内容说明>
元素内容说明可以指明五种可能的元素内容形式:#PCDATA、子元素、混合内容、EMPTY、ANY。
#PCDATA
n 关键字#PCDATA说明元素包含字符数据。
例如:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE hr[
<!ELEMENT hr (#PCDATA)>
]>
<hr>人力资源标准</hr>
子元素
n 当一个元素只包含子元素,而没有字符数据时,则称此元素类型具有元素内容(element content)。
n 在该类型的元素声明时,通过内容模型来指定在其内容上的约束。内容模型是决定子元素类型和子元素出现顺序的一种简单语法。
n 利用括号、逗号、竖线、星号、加号、问号的组合,可以说明很复杂的内容模型。我们看下面的例子:
<!ELEMENT 简历 (姓名,性别,年龄,(电话|手机),家庭住址?,兴趣爱好*,教育经历+,工作经验*)>
这说明简历中要有姓名,接下来是性别和年龄,电话和手机任选一个,可以填一个家庭 住址或者不填,然后是零个或多个兴趣爱好,至少要有一个教育经历,最后是零个或多个工作经验。
混合内容
n 说明元素既可以包含字符数据,也可以包含子元素。
n 混合内容必须被定义零个或多个。
例如:
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE employee[
<!ELEMENT employee (#PCDATA|name)*>
<!ELEMENT name (#PCDATA)>
]>
<employee>
<name>张三</name>
</employee>
n 在使用混合内容模型时,#PCDATA关键字必须是模型中的第一个选项,不能在模型中使用逗号、问号和加号。用竖线分隔的#PCDATA和元素的列表是合法的,其他用法都是不合法的。
EMPTY
n 关键字EMPTY表明该元素不包含字符数据,也不包含子元素,是一个空元素。
n 如果在文档中元素本身已经表示了明确的含义,就可以在DTD中用关键字EMPTY来声明空元素。例如:
<!ELEMENT br EMPTY>
表明br是一个没有内容的空元素。
ANY
n 关键字ANY表明该元素可以包含任何的字符数据和子元素,只要它们不违反XML格式良好的约束就可以了。例如:
<!ELEMENT employee ANY>
表明employee可以包含任何形式的内容。
n 在实际使用时,应该尽量避免使用ANY,一个定义明确的DTD,有助于我们清理文档的结构,更好地理解文档。
实体声明
n 有两种类型的实体:一般实体(general entity)和参数实体(parameter entity)
n 一般实体是在文档内容中使用的实体,而参数实体则是在DTD中使用的已分析实体。
n 不管是一般实体,还是参数实体都是用ENTITY关键字来声明。
一般实体和参数实体
n 一般实体的声明语法如下:
<!ENTITY 实体名 “实体内容”>
引用实体的方式为:”&实体名;”。
n 参数实体只能在DTD中使用,它的声明语法如下:
<!ENTITY % 实体名 “实体内容”>
注意在声明时,ENTITY、%和实体名之间各有一个空格。引用实体的方式为:“%实体 名;”
n 在内部DTD子集中,参数实体引用不能在标记声明内部出现,可以在标记声明允许出现的地方出现。对于外部DTD子集,则没有这个限制。
n 在DTD中,所有的参数实体必须在引用之前进行声明。这意味着内部DTD子集不能引用在外部DTD中声明的参数实体,这是因为XML处理器将首先读取内部子集,也就是说,内部子集中的实体和属性列表声明的优先级别要比在外部子集中的高。
n 内部实体在XML文档内部定义,实体内容在声明中给出。内部实体都是已分析的实体,它们没有单独的物理存储对象。
n 外部实体在单独的(外部)文件中定义,外部实体可以是已分析实体,也可以是未分析实体。外部一般实体的声明形式如下:
<!ENTITY copyright SYSTEM “http://localhost/copyright.xml”>
关键字SYSTEM表明这是一个私有的外部一般实体,后面的URI称为该实体的系统标 识符,用于给出外部文件的位置。
copyright.xml文件的内容为:
<?xml version=”1.0” encoding=”gb2312”?>
©2004,程序员,All Rights Reserved
<?xml version=”1.0” encoding=”gb2312”>称为文本声明。文本声明类似于XML声明,不过文本声明没有standalone属性,并且version属性也是可选的。外部已分析实体可以使用不同UTF-8的编码,使用文本声明来指定实体内容的编码方式。
n 每个外部已分析实体都应该以文本声明开始。文本声明只能在外部已分析实体的开头出现,不能出现在其他任何位置。在外部已分析实体中的文本声明不会作为替换文本的一部分出现。
n 也可以使用PUBLIC关键字来声明公共的外部一般实体,其声明形式和使用了关键字PUBLIC的外部DTD声明类似。如下:
<!ELEMENT open-hatch PUBLIC “-//Textuality//TEXT Standard open-hatch
boilerplate//EN” “http://www.textuality.com/boilerplate/.OpenHatch.xml”>
“-//Textuality//TEXT Standard open-hatch boilerplate//EN”称为该实体的公共标识符,后面 的URI部分为该实体的系统标识符。
n 下面的例子声明了一个外部一般未分析实体。
<!ELEMENT hatch-pic SYSTEM “../grafix/OpenHatch.gif” NDATA gif>
n 与一般实体类似,参数实体的替换文本也可以位于外部文件中,其声明形式和一般实体类似。
分享到:
相关推荐
### CSS基础知识概览 #### CSS简介 CSS,全称为Cascading Style Sheets(层叠样式表),是一种用于定义HTML或XML文档中元素样式的语言。它使得网页设计者能够独立地控制网页的内容与表现形式,提高了网站开发的效率...
"Oracle知识点滴"显然是一份汇聚了关于Oracle数据库关键概念和技术的资料,适合Oracle用户进行学习和参考。以下是根据标题、描述以及文件名所推测的一些关键知识点: 1. **Oracle数据库架构**:Oracle数据库采用...
### Eclipse SWT开发点滴 #### 一、第三方包的引用 在使用Eclipse进行SWT开发时,经常会遇到需要引入第三方库的情况。以下是引入第三方库的具体步骤: 1. **工程项目增加Libraries** - 右键点击项目 -> `Build ...
而“心梓知识”可能是指该源码包含了关于心理健康或情绪管理的知识分享,为用户提供更全面的服务。 总的来说,这份源码资源涵盖了前端网页开发的多个方面,从基础的HTML结构到复杂的JavaScript交互,再到可能涉及的...
### Spring in Action 学习点滴知识点总结 #### 第二章:装配Bean 1. **`<ref>`标签中的`bean`、`local`、`parent`三个属性的区别** - `bean`属性用于指向一个具体的bean实例。 - `local`属性用于表示本地bean...
综合以上信息,我们可以得出NoteBook是一个具有笔记、日记、知识管理功能的软件,用户可以通过它来记录生活点滴、管理信息,并且可以自定义界面。它依赖于一些库文件如mfc42.dll和iconv.dll来实现其功能,并且使用...
3. **日记**:暗示NoteBook可能有日记编写和管理的功能,适合记录个人生活或工作中的点滴。 4. **知识点管理**:说明NoteBook设计时考虑到了知识的分类、存储和检索,适合学习者或研究者使用。 5. **随笔**:可能有...
默认监听端口为8080,可通过修改`conf/server.xml`配置文件来更改。 #### 结语 Java的学习之路既漫长又充满乐趣,从理解JDK的基本构成到掌握应用服务器的配置,每一步都是对编程技能的提升。希望以上分享能够帮助...
【标题】"我的日记本—可参考"是一个安卓应用程序项目,旨在提供一个个人日记管理平台,用户可以在这里记录、编辑、删除和查找他们的日常生活点滴。这个项目作为一个安卓入门练习,涵盖了移动应用开发的基础知识,是...
这篇文档包含了六篇程序员实习日记,记录了一位实习生在2020年期间学习和工作的点滴,主要涉及Java编程、开源框架、数据库管理和Web应用开发等主题。以下是这些日记中提炼出的重要知识点: 1. **Java编程框架**:...
6. **XML布局文件**:如activity_main.xml,定义了应用的UI结构。 在Android Studio中,开发者可以使用Java或Kotlin编写代码。这个便签应用可能采用了MVVM(Model-View-ViewModel)设计模式,这是一种现代化的开发...
QQ发表说说功能框是QQ社交平台上的一个重要组成部分,它允许用户分享心情、想法或生活点滴,与好友进行互动。实现这一功能涉及到前端界面设计、后端数据处理以及用户交互等多个方面的技术。以下是对这个功能框背后的...
【部分内容】中的第一篇文章讲述了主人公在生活中感到忙碌和压力,但在生日那天得到了家人的惊喜,从而意识到幸福就存在于日常生活的点滴之中。第二篇文章通过与爷爷下棋的情景,展现了亲情的温暖和陪伴带来的幸福感...
这种系统提供了一种便捷的方式,让人们能够分享思想、观点、专业知识或者生活点滴,无需深入学习编程技术。博客引擎是博客系统的核心组成部分,它负责处理用户的交互、内容管理、模板渲染和权限控制等功能。 在...
6. **Intent通信**:在Android中,Intent用于启动新的活动或服务,传递数据。在随手记中,创建新记录或查看记录时,可能会用到Intent来启动相应的活动。 7. **SharedPreferences**:为了实现轻量级的设置存储,...
7. **导入导出**:兼容多种格式,如TXT、HTML、XML等,便于与其他应用之间交换数据。 myBase的使用技巧和进阶功能还包括: - **关联链接**:在不同笔记之间建立链接,形成知识网络,方便跨笔记查找相关信息。 - **...
6. **权限管理**:Android系统有严格的权限管理,例如,读写外部存储(用于备份或分享记事)和接收广播等都需要在Manifest.xml中声明相应的权限。 7. **测试与调试**:在开发过程中,你会使用ADT提供的模拟器或连接...
【标题】"简单的个人记事本APP"是一个基于Android Studio开发的应用程序,旨在提供一个便捷的个人记事功能,让用户可以快速记录生活中的点滴、想法或待办事项。这款应用结合了基本的文本编辑功能与照相机权限的调用...
在Android平台中,开发一款记事本应用程序是一项基础且实用的任务,它能够帮助用户记录生活中的点滴、工作中的想法或是学习笔记。本教程将深入探讨如何使用Android Studio进行记事本应用的开发,以"Jishiben.rar...
本项目名为“Android应用源码之便签软件”,它是一个典型的Android应用程序,旨在实现一个便签管理功能,帮助用户记录日常生活中的点滴。通过分析这个源码,我们可以深入学习Android开发的多个关键知识点。 首先,...