【JAVA与XML、dtd约束、Schema约束】
一、XML。
(1)XML:Extensible Markup Language
(2)XML是一种标记语言。
(3)XML的设计宗旨是传输数据,而不是显示数据。
(4)XML标签没有被预定义,即使用约束的XML文档设计具有自我描述性。
(5)XML是W3C的推荐标准。
(6)XML作用:存储、配置。
(7)约束:XML的内在要求。
(8)组成:文档声明、原属、属性、注释、CDATA区、特殊字符、处理指令。
文档声明举例:<?xml version="1.0" encoding="utf-8" standalone="yes"?>
二、编码与乱码。
1.编码分类。
(1)utf-8:万国码
(2)gb2312:国标码(简体)
(3)gbk:国标码(简体、繁体)
(4)gb8859-1:国标码(简体、繁体、少数民族)
(5)BIG5:大五码(繁体)
(6)iso-8859-1:西文编码
2.编码规则
(1)所有的编码都可以生成相应的字节码
(2)相同文字采用不同编码内容相同
(3)所有的编码都可以进行转换
3.乱码:文件内容编码和文件编码不同。
如:文件内容编码是utf-8,但是文件编码是gbk
解决方式:将两者统一起来即可。
三、空格与回车
XML文件中出现的所有空格和回车,XML解析程序都会当做标签内容来处理,所以在编写XML文件时,使用换行和缩进等方式让源文件中的内容清晰可读的良好习惯可能要被迫改变。如<a>www.baidu.com</a>与
<a>
www.baidu.com
</a>
是不同的,前者的子元素只有一个,后者的子元素有三个。
空格必须使用英文空格,不允许使用中文空格。
四、其它规则
1、包含内容的标签必须成对出现,如<book>微机原理与接口技术</book>,不包含标签体的标签格式:<book></book>或者<book/>
2、XML标签区分大小写,不能以数字或者下划线开头,不能包含空格,名称中间不能有冒号
3.每个元素可以有多个属性,每个属性都可以有自己的值。<价格 单价=“人民币”>26</价格>
4、表达一个事情可以使用多种方式,可以使用均为标签的形式:<价格><单价>人民币<单价><数值>26</数值></价格>或者标签和属性搭配的方式:<价格 单价=“人民币”>26</单价>,属性值必须使用单引号或者双引号括起来。
5、XML注释使用<!---->
6、CDATA区:不需要使用转义字符就可以将符号显示出来。
用法:<![CDATA[内容]]>,作为标签内容使用。
五、处理指令(PI:Processing Instruction)。
1.处理指令必须以<?开头,以?>结尾,XML声明语句就是最常见的处理指令。
2.处理指令用来指挥解析引擎如何解析XML文档内容。
举例:在XML文档中可以使用xml-stylesheet指令,通知xml解析引擎,应用css文件显示xml文档内容。
<?xml-stylesheet type="text/css" href="1.css"?>
注:xml引入了样式表,则浏览器就会对xml文件进行和html相同动作的解析。
一、dtd。
1、dtd约束:使用XML知识,描述个人信息。
2、必要性:每个人都有自己的表达方式,这样需要多种程序与之相对应,这样就乱套了。
3、约束:书写一个文档对当前的XML文档进行约束。
4、dtd与xml文档进行关联的方式:dtd约束可以作为一个单独的文件来编写,也可以在xml文件中编写。
xml文档使用DOCTYPE声明语句来声明它所遵循的dtd文件。
关联方式:
(1)内部dtd方式:在xml文件内部书写dtd规范。
格式:<!DOCTYPE 根元素 [具体规范内容]>,其中书架是根元素,注意两个空格的使用。
(2)外部dtd方式:使用单独的dtd文件规范xml内容。
格式:<!DOCTYPE 根元素 SYSTEM "DTD文件url">,其中书架是根元素,注意几个空格的使用。
(3)公共dtd方式:使用互联网上的dtd文件。
格式:<!DOCTYPE 根节点 PUBLIC "dtd文件名称" "dtd公共文件的url">
5、dtd语法细节
(1)元素定义:ELEMENT
(2)属性定义:ATTLIST
(3)实体定义:ENTITY
二、元素定义:ETD
三、属性定义。
格式:
<!ATTLIST 元素名称
属性名 属性类型 约束
属性名 属性类型 约束
>
四、实体定义。
1、实体的本质:变量,用于引用普通文本或者特殊字符的快捷方式的变量。
2、分类。
(1)内部实体。
【1】引用实体
语法格式:<!ENTITY 实体名称 “实体内容”>
使用方式:在xml文档中,直接使用“&实体名称”的方式
举例:<!ENTITY name "kdyzm">,在xml文档中只需要使用&name就可以相当于直接拿到了"kdyzm"字符串
【2】参数实体
语法格式:<!ENTITY %实体名称 "实体内容">
使用方式:在dtd文档中,使用%实体名称整体引用“试题内容”
举例:<!ELEMENT %base "title,year,price">,在dtd文档中:<!ELEMENT BOOK %base>
(2)外部实体
语法格式:<!ENTITY 实体名称 SYSTEM "URL">
使用方式:直接使用&实体名称引用。
举例:<!ENTITY INFO SYSTEM "PART.XML">,在xml文件中,则直接使用&info引用PART.XML文件中的字符串。
五、dtd文件实例。
1、电视节目表dtd
<!DOCTYPE TVSCHEDULE [ <!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)> <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED> ]>
2、报纸文章dtd
<!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED> <!ENTITY NEWSPAPER "Vervet Logic Times">
<!ENTITY PUBLISHER "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press"> ]>
3、产品目录dtd
<!DOCTYPE CATALOG [ <!ENTITY AUTHOR "John Doe">
<!ENTITY COMPANY "JD Power Tools, Inc.">
<!ENTITY EMAIL "jd@jd-tools.com"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT
(SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>
<!ATTLIST PRODUCT
NAME CDATA #IMPLIED
CATEGORY (HandTool|Table|Shop-Professional) "HandTool"
PARTNUM CDATA #IMPLIED
PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"
INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)>
<!ATTLIST SPECIFICATIONS
WEIGHT CDATA #IMPLIED
POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)>
<!ATTLIST OPTIONS
FINISH (Metal|Polished|Matte) "Matte"
ADAPTER (Included|Optional|NotApplicable) "Included"
CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)>
<!ATTLIST PRICE
MSRP CDATA #IMPLIED
WHOLESALE CDATA #IMPLIED
STREET CDATA #IMPLIED
SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)> ]>
六、使用JavaScript校验XML文件
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<script language="javascript">
//从语法上分析:parse
//1.创建xml文档解析器对象 var xmldoc =new ActiveXObject("Microsoft.XMLDOM");
//2.开启xml校验
xmldoc.validateOnParse="true";
//3.装载xml文档
xmldoc.load("Person.xml"); //4.获取错误信息
var result=xmldoc.parseError.reason;
if(result!="")
{
document.write("错误代码:"+xmldoc.parseError.errorCode+"<br/>");
document.write("错误信息:"+xmldoc.parseError.reason+"<br/>");
document.write("错误行数:"+xmldoc.parseError.line+"<br/>");
}
else
{
document.write("无错误信息!");
}
</script>
</html>
一、Schema简介
【JAVA与XML、dtd约束、Schema约束】的更多相关文章
- XML DTD跟SCHEMA约束 语法了解
dtd语法 元素: <!Element 元素名称 数据类型|包含内容> 数据类型: #PCDATA:普通文本 使用的时候一般用()引起来 包含内容: 该元素下可以出现哪些元素, 用()引起 ...
- xml初步,DTD和Schema约束
XML 可扩展的标记语言(!!!可扩展) 作用 1.存放数据 2.配置文件 语法 文档声明 <?xml version="1.0" encoding="UTF-8& ...
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- XML约束——Schema约束
XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...
- DTD与Schema约束
1.DTD:(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法 规则.它是标准通用标记语言.2.XML Schema 是基于XML的DTD替代者 ...
- 在myeclipse等IDE中添加本地的dtd与schema约束文件
*针对没有网络无法正确引入dtd而使用不了提示的问题 (配置完后重启IDE) window->perferences- > 搜索xml c 找到xml catalog 右边点击 a ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
- XML的Schema约束
XSD文档至少要包含:schema根元素和XML模式命名空间的定义.元素定义.需要注意的是XSD中必须定义一个且只能定义一个schema根元素,根元素中包括模式的约束,XML模式命名空间的定义,其他命 ...
- Schema约束, dom4j解析
Schema是新的XML文档约束:Schema要比DTD强大很多,是DTD替代者;Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml .Schema功能更强大,数据类型更 ...
- schema约束和引入
schema的概述 schema约束同为xml文件的约束模式语言之一, 最大的作用是为了验证xml文件的规范性的. 是为了解决dtd约束不够的问题, 相应的他的配置就变得比较复杂 schema本身就是 ...
随机推荐
- fastx_toolkit软件使用说明
高通量测序数据下机后的原始fastq文件,包含4行,其中一行为质量值,另外一行则为对应序列,我们都了解高通量的数据处理首先要进行质量控制,这些过程包括去接头.过滤低质量reads.去除低质量的3'和5 ...
- javascript最容易混淆的作用域、提升、闭包
一.函数作用域 1.函数作用域 就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用. function foo(a) { var b = 2; funct ...
- c++ SOA Axis2c 编译安装
Axis2C 安装过程 1设置环境变量 export AXIS2C_HOME=/usr/local/axis2c 2.下载源码包解压编译安装 cd axis2c-src-1.6.0 ./configu ...
- 有向图寻找(一个)奇环 -- find an oddcycle in directed graph
/// the original blog is http://www.cnblogs.com/tmzbot/p/5579020.html , automatic crawling without l ...
- php上传文件大小限制修改
打开php.ini 1.最大上传文件大小: upload_max_filesize=2M 改成自己需要的大小 2.最大post大小: post_max_size=2M 改成自己需要的大小,第二个一般比 ...
- 关闭CENTOS不必要的默认服务
CentOS关闭服务的方法: 图形界面,运行ntsysv chkconfig –level 2345 服务名称 off 服務名稱 建議 說明 acpid 停用 Advanced Configurati ...
- ubuntu14.04 server安装gnome-desktop
You can install the default Ubuntu desktop by executing the following: sudo apt-get install ubuntu-d ...
- Response.Redirect()、Server.Execute和Server.Transfer的区别
1.Response.Redirect(): Response.Redirect方法导致浏览器链接到一个指定的URL. 当Response.Redirect()方法被调用时,它会创建一个应答,应答头中 ...
- c++数据类型和定义
我们都知道,刚开始学习数学的时候.乘法口诀.99乘法口诀.这个是大家都需要背的.背熟了这个,大家才能知道遇到算术题如何计算.这个99乘法口诀就是一种定义. 同样任何的语言都会有很多的定义.比如语文:各 ...
- Unity3d 换装Avatar系统
原理就是用新造的部件和角色的骨骼进行重新对接. demo的使用方法: PartIdx设置要换那个部件[0,4],一共5个部件 EquipIdx设置要更换部件的装备索引[0,1],具体看我的Change ...