XML中CDATA和#PCDATA的区别
1)在DTD中,指定标签中某个属性的类型为字符型时,使用CDATA。因为XML解析器会去分析这段字符内容,因而里面如果需要使用>, <, &, ', "这5个特殊字符,应当用对应的替代字符来表示(必须以&开始,以;结束)。具体如下:
< - < (less than)
> - > (greater than)
& - & (ampersand)
' - ' (apostrophe)
" - " (straight double quotation mark)
例如在DTD中声明:
<!ATTLIST author period CDATA> 它表示在author这个标签中,period属性应该是字符类型。
2) 在XML中,指定某段内容不必被XML解析器解析时,使用<![CDATA[...]]>。也就是说中括号中的内容解析器不会去分析。所以其中可以包含>, <, &, ', "这5个特殊字符。经常把一段程序代码嵌入到<![DATA[...]]>中。 因为代码中可能包含大量的 >, <, &, "这样的特殊字符。
例如在XML中声明:
<![CDATA[
if(i<10){
System.out.println("i<10");
}
]]>
3) 在DTD中,指定某个标签中的内容是字符数据时,使用(#PCDATA)。由于它的内容也是需要解析器来解析的,所有仍然需要转换>, <, &, ', "这5个特殊字符。
例如在DTD中声明:
<!ELEMENT name (#PCDATA)> 它表示在<name>和</name>标签之间可以插入字符或者子标签。
CDATA区域表示里面是什么数据XML不会解析。
1. CDATA: Character Data, PCDATA: Parsable
CDATA,是可以分析的字符序列,CDATA就是指字符串,而PCDATA可以是字符串、子元素、字符串和子元素。
2. CDATA是属性声明中的类型,就是字符串,&、<、“”和‘’ 等都具有特殊含义被解析,例如:"解析为双引号;#PCDATA是元素声明中的类型,指的是混合类型,即可以包子元素也可包含字符串, &和<也是具有特殊含义被解析。
ANY 并不局限于“#PCDATA”,只是说明该元素可以包含任何内容,一般来讲,解析器无法验证其有效性(一般也不会验证),#PCDATA源于“可解析的字符”,对于有特殊含于的< 会按照子元素开始进行解析。
#PCDATA 该内容模型说明元素中可以同时出现文本和元素.
ANY ANY关键子表明DTD中声明的任何元素都可以使用作该元素的子元素
CDATA 属性值是字符数据
#PCDATA和ANY用于元素声明
CDATA用于属性声明
来源:https://www.cnblogs.com/efforts-will-be-lucky/p/7594341.html
XML中CDATA和#PCDATA的区别的更多相关文章
- ibatis中的cdata和xml中cdata的含义
ibatis的cdata用于sqlmap文件中,二sqlmap本身就是xml文件,即解析cdata的方法与xml文件的cdata相同. 简单来说:cdata就是用来表明纯文本的,如果没有这个的话 &l ...
- 在web.xml中classpath和classpath*的区别
classpath 和 classpath* 区别: classpath:只会到你指定的class路径中查找找文件; classpath*:不仅包含class路径,还包括jar文件中(class路径) ...
- web.xml 中<context-param>与<init-param>的区别与作用
<context-param>的作用: web.xml的配置中<context-param>配置作用 1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件 ...
- xml中Node和Element的区别
本文转载自:http://blog.csdn.net/wcydiyi/article/details/4432636点击打开链接 1.元素(Element)和结点(Node)的区别: ...
- web.xml中:<context-param>与<init-param>的区别与作用及获取方法
<context-param>的作用: web.xml的配置中<context-param>配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件w ...
- web.xml中classpath*:与classpath:的区别
classpath对应src目录,该目录下的文件会在编译后被存放到WEB-INF文件夹下的classes目录. classpath:只会到你的class路径中查找配置文件,对于多个同名的配置文件,只会 ...
- XML中CDATA及其字符实体的使用
在写xml文档时,偶尔会用到一些特殊字符,如<.>.&等,如下面这段程序: <?xml version="1.0"?> <y>if x& ...
- web.xml中的ContextLoaderListener和DispatcherServlet区别
ContextLoaderListener和DispatcherServlet都会在Web容器启动的时候加载一下bean配置. 区别在于: DispatcherServlet一般会加载MVC相关的be ...
- php读取xml中cdata部分方法
本例使用php的simplexml:XML(eventtrackdata.xml'): <eventdata> <event> <date>2012.05.11&l ...
随机推荐
- 想用idea的update classes and resources找不到了,热部署无法使用
发现为了方便调试页面,想用idea的update classes and resources找不到了,发现需要把deployment选择exploded 的那个war包,才能在service--> ...
- Redis - 事务操作与详解
https://blog.csdn.net/J080624/article/details/81669560 写的比较清楚的一个帖子
- Ubuntu 16.04下使用Wine安装Windows版的微信(不太完美)
说明: 真的不太完美,别试了:除了需要安装额外的输入法之后,无法上传图片和间接性的BUG出现等等问题. 建议安装网页版的微信:http://www.cnblogs.com/EasonJim/p/711 ...
- fastdfs-zyc监控系统的使用
原文:http://blog.csdn.net/foreversunshine/article/details/51907659 写在前面 前面有介绍过怎么安装与使用FastDFS来进行分布式的文件存 ...
- Activiti 流程部署方式 activi 动态部署(高级源代码篇)
Activiti的流程 部署方式有非常多种方式,我们能够依据activit工作流引擎提供的ap方式进行部署. 当然了实际需求决定你要使用哪一种api操作,后面的总结具体介绍了使用场景. 以下看一下部署 ...
- 用户'sa'登录失败(错误18456)解决方案图解
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://thenear.blog.51cto.com/4686262/865544 htt ...
- 使用".."指定git提交范围与"..."指定git提交范围的区别
http://blog.csdn.net/hansel/article/details/8952967 使用".."(两个点)和"..."(三个点)都可以指定一 ...
- fuser - identify processes using files or sockets
FUSER(1) User Commands FUSER(1) NAME fuser - identify processes using files or sockets SYNOPSIS fuse ...
- java 连接mysql 和sql server2008代码
这两天用java分别连接mysql和sql server2008代码.刚開始都是有错.如今找到了在 自己机器上成功连接的代码: 1. mysql Class.forName("com.mys ...
- windows下的txt格式转换成linux下的TXT
存在的问题是 多出一个方框或者黑格子 主要是因为bash 不能忽略windows的问题 用sed 命令来处理,分别是windows转linux,linux转windows sed -e 's/.$// ...