XML——文档类型定义(DTD-Document Type Definition)
【0】README0.1)本文文字描述转自 core java volume 2 , 旨在理解 XML——文档类型定义(DTD-Document Type Definition) 的基础知识; 【1】DTD相关1)提供DTD的方式有多种,可以将其纳入到 XML文档中: <?xml version="1.0">
<!DOCTYPE configuration [
<!ELEMENT configuration ...>
more rules
...
]>
2)正如你所看到的,这些规则被纳入到了 DOCTYPE声明中, 该代码块使用 […] 来限定其界限;文档类型必须匹配根元素的名字,比如 荔枝中的configuration;
<!DOCTYPE configuration SYSTEM "config.dtd">
或者:
<!DOCTYPE configuration SYSTEM "http://myserver.com/config.dtd">
4)最后,有一个来源于 SGML 的用于识别DTD的机制: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.2 //EN" "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">
Attention)
class MyEntityResolver implements EntityResolver {
public InputSource resolveEntity(String publicId,String systemId)
{
if(publicId.equals(a known Id))
return new InputSource(DTD data);
else
retunr null;
}
}
你可以从 InputStream, Reader 或字符串构建输入源;
5) 现在你知道了 解析器怎样定位 DTD了,下面,看看不同类型的规则:
<!ELEMENT font (name,size)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT size (#PCDATA)>
Attention)
<!ELEMENT chapter (intro,(heading,(para|image|table|noe)+)+)>
每章都以简洁开头, 其后是一个或多个小节, 每个小节有一个标题和一个或多个段落,图片,表格或说明构成;
<!ELEMENT captionedImage (image,#PCDATA)> , 必须重写一个规则,以引入另一个 caption 元素或 允许 使用 image 元素或文本的组合;
<!ATTLIST font style (plain|bold|italic|bold-italic) "plain">
<!ATTLIST size unit CDATA #IMPLIED>
Attention)
6)CDATA属性值的处理与你前面看到的处理 #PCDATA有着微妙的差别: 并且与
<!ENTITY back.label "Back">
其他地方的文本可以包含对这个实体的引用,如: <menuitem label = "&back.label; "/>
7)Conclusion: 这样,我们就结束了对 DTD 的介绍了。你已经知道如何 使用 DTD了;你可以配置你的解析器以充分利用他们; (干货——如何配置XML解析器)
<font>
<name>a</name>
<size>a</size>
</font>
Element e1 = (Element) children.item(0);
Element e1 = (Element) children.item(1);
void warning(SAXParseException exception)
void error(SAXParseException exception)
void fatalError(SAXParseException exception)
可以通过 DocumentBuilder 类的 setErrorHandler 方法来安装 错误处理器:
builder.setErrorHandler(handler);
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第
- swift读取本地数据元 *.plist 文件
- ruby-on-rails – 在Ruby中使用什么是|| = begin
- c# – WPF自定义控件DependencyProperty不会数据
- ajax处理返回的json数据
- swift3读取本地json数据 --JSONSerialization.js
- 你如何掩饰任何形状的反应原生?
- Flex手机项目继承IconItemRenderer自定义List组件
- postgresql – 如何判断Postgres中的记录是否已更
- c# – 使用foreach的IndexOutOfRangeException