java xml doctype_XML中的DOCTYPE属性

一.先来两个小例子

内部dtd将standalone设为真。

root [

]>

外部dtd将standalone设置为假

root SYSTEM "http://www.test.org/test.dtd">

二.概论

DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称。

如果是内部DTD(私有DTD),则再空一格出现[],在中括号中是文档类型定义的内容.

而对于外部DTD,则又分为私有DTD与公共DTD,

私有DTD使用SYSTEM表示,接着是外部DTD的URL.

公共DTD则使用PUBLIC,接着是DTD公共名称,接着是DTD的URL.

三.外部DTD之公共DTD

公共DTD,DTD名称格式为"注册//组织//类型 标签//语言",

"注册"指示组织是否由国际标准化组织(ISO)注册,+表示是,-表示不是.

"组织"即组织名称,如:W3C; "类型"一般是DTD,

"标签"是指定公开文本描述,即对所引用的公开文本的唯一描述性名称,后面可附带版本号。

最后"语言"是DTD语言的ISO 639语言标识符,如:EN表示英文,ZH表示中文,在下面的地址有完整的ISO 639语言标识符列表http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt

举例:root SYSTEM "http://www.test.org/test.dtd">

举例xhtml的doctype(xhtml是html的xml化,现在html中写法非常简单,不需要写doctype了):

html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd">

表明根元素为html标签,为公共DTD,非注册,w3c组织,类型为DTD,标签为transitional,语言为英语。

四.外部DTD之私有DTD

root SYSTEM  "http://www.test.org/test.dtd" >

五.内部DTD

rootElement [

declarations

]>

六.内部DTD和外部DTD可以混合使用

rootElement SYSTEM "URIreference"[

declarations

]>

或者

rootElement PUBLIC "PublicIdentifier" "URIreference"[

declarations

]>

七.在eclipse中使用DTD

Window>preference>XML>XML Catalog添加User Specified Entries,下面以mybatis的DTD文件为例说明。

打开mybatis.xml,在各个标签下尝试使用alt+/代码提示,可以看到可用标签。

将DOCTYPE标签删掉,会产生一个警告。此时会发现代码提示功能没了。

在eclipse中添加User Specified Entries,localtion就写:c:\mybatis.dtd,key写mybatis

在mybatis.xml中添加doctype:

configuration PUBLIC "mybatis" "C:\Users\weidiao\Documents\my-java-lib\XML-DTD\mybatis-3-config.dtd">

这时又可以使用代码提示了。

这样做的缺点是,dtd文件位于本机,移植性较差;优点是dtd文件都在本机上,即使电脑从来没有连网,也可以正常使用。实际上,现在你断开网络,依旧可以自动提示,因为eclipse已经缓存好了。在这里:windows->preference->network connections->cache,好多的dtd文件有没有,一旦清空缓存,你就没有代码提示功能了!当然也不必多虑,现在有几个电脑不经常联网。

八.Log4j 2.0使用DTD文件

log4j 2.0的配置支持多种方式,json,xml,properties等。其中xml配置方式又分为严格版和简易版,严格版写起来比较麻烦。json版也没有代码提示功能。解压log4j2.0的core包,可以看见几个xsd文件和dtd文件,他们就是定义XML配置格式的。要想使用代码提示,也不用捣鼓这些xsd和dtd,直接使用log4j的严格版就可以。一旦导入log4j包,就已经可以使用了!

如下所示,通过package属性引入了命名空间。

packages="org.apache.logging.log4j.test">

target/test.log

onMismatch="NEUTRAL" />

onMismatch="ACCEPT" />

onMismatch="NEUTRAL" />

onMismatch="DENY" />

%d %p %C{1.} [%t] %m%n

additivity="false">

additivity="false">

九.XSD:DTD的终结者

对于这些细节问题,知道就可以了。然而知道100个,在应用的时候能灵活使用的只有1个,所以还是应该对这些知识点有清晰的印象,技不压身。

XSD是指XML结构定义 ( XML Schemas Definition )

XML Schema 是DTD的替代品。XML Schema语言也就是XSD。

XML Schema描述了XML文档的结构。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。

一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值。

XSD是DTD替代者的原因,一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。

XSD文件的后缀名为.xsd。

Xml Schema的用途

1.  定义一个Xml文档中都有什么元素

2.  定义一个Xml文档中都会有什么属性

3.  定义某个节点的都有什么样的子节点,可以有多少个子节点,子节点出现的顺序

4.  定义元素或者属性的数据类型

5.  定义元素或者属性的默认值或者固定值

XML Schema的优点:

1) XML Schema基于XML,没有专门的语法

2) XML可以象其他XML文件一样解析和处理

3) XML Schema支持一系列的数据类型(int、float、Boolean、date等)

4) XML Schema提供可扩充的数据模型。

5) XML Schema支持综合命名空间

6) XML Schema支持属性组。

十.XSD小例子

在eclipse中新建java工程,在src目录下新建haha.xsd

elementFormDefault="qualified" attributeFormDefault="qualified">

然后在新建一个xml文件,命名空间引用haha.xsd

xsi:noNamespaceSchemaLocation="haha.xsd">

wyf

weidiao

写完animal并引入命名空间之后,就这样一写‘

jboss:在standalone.xml中设置系统属性(system-properties)

就象在.net的web应用中,可以在web.config中设置appSettings一样,jboss的standalone.xml中也可以由开发人员自行添加系统属性,用法如下:

Android自己定义控件而且使其能够在xml中自己定义属性

为什么要自己定义View android开发中自己定义View的优点是显而易见的.比方说以下的这个顶部导航,它被设计出如今应用的每一个界面,但每次的内容却不尽同样.我们不能在每一个layout资源中都 ...

xml中该使用属性还是元素

XML 中没有规定哪些必须放在属性或者子元素,因此使用哪种方式都是可以实现的.这取决于个人的经验和喜好.在可以使用元素也可以使用属性的两选一的情况下,个人更倾向于使用子元素.主要理由如下: 1. 属性 ...

SqlMapConfig.xml中的setting属性设置

SqlMapConfig.xml中的setting属性 Ibatis mybatis

Struts2.xml中result type属性说明

在struts2配置XML里,result中type属性有以下几种: 1.dispatcher:服务器跳转到前台,后面跟着可以是JSP.htm等等前台页面,默认是这种. 2.redirect:客户端跳 ...

【XML】-- C#读取XML中元素和属性的值

Xml是扩展标记语言的简写,是一种开发的文本格式. 啰嗦几句儿:老师布置的一个小作业却让我的脑细胞死了一堆,难的不是代码,是n多嵌套的if.foreach,做完这个,我使劲儿想:我一女孩,没有更多女孩 ...

struts2.xml 中result type属性说明

chain           用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息.           com.opensymphony.xwork2.Acti ...

android xml中的xliff属性

随机推荐

Hibernate映射文件如何配置触发器

Hibernate映射文件之触发器生成(generated属性.database-object元素) (2013-02-27 12:28:49) 转载▼ 标签: it 分类: JAVA学习笔记 这里分 ...

[团队项目]SCRUM项目4.0

1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...

robotium 新建 android 测试项目:

注意:新建项目后再运行前一定要修改Manifest文件中的instrumentation 中的target package, 这个是测试的入口 1. 程序开始要通知系统我要测的app是什么 如何知道a ...

[转载][MFC]MFC的美化

转载:http://blog.csdn.net/b_silence/article/details/10489085 前些天用MFC开发一个桌面程序,实现功能后客户说界面太难看,自己仔细看看也着实难看 ...

Mongodb的索引--学习笔记(未完)

全文索引 建立方法: --在articles集合的key字段上创建全文索引 db.articles.ensureIndex({key:"text"}) --在articles集合的 ...

.net 接口返回json格式示例

1.新建 InterfaceTestPro1 项目: FILE - New - Project... - Web - ASP.NET Web Forms Application name:Interf ...

ubuntu12.04 mysql服务器乱码问题的解决办法

网上方法太杂乱,有些甚至很复杂,其实ubuntu下只需要修改一个配置文件即可. sudo vi /etc/mysql/my.cnf 在[client]下加入 default-character-set ...

CI 笔记3 (easyui 的layout布局,最小化layout原型)

在做easyui的layout的布局时,最小化一个原型,分2步,一个是div的父标签,一个是body做父标签,全屏的. 步骤分别为: 在设置的5个区中,div的最后一个,必须是data-options ...

JavaScript语法支持严格模式:";use strict";

如果给JavaScript代码标志为“严格模式”,则其中运行的所有代码都必然是严格模式下的.其一:如果在语法检测时发现语法问题,则整个代码块失效,并导致一个语法异常.其二:如果在运行期出现了违反严格模 ...

[HeadFirst-HTMLCSS入门][第十一章布局排版]

流 浮动布局 冻结布局 凝胶布局 绝对布局 表格显示布局 postion 绝对 静态 固定 相对 浮动元素 必须指明宽度 解决重合 中缝 设置外边距留中缝,好看一点 clear标签 不准左右有浮动元素 ...

你可能感兴趣的:(java,xml,doctype)