博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML 基础
阅读量:6604 次
发布时间:2019-06-24

本文共 11885 字,大约阅读时间需要 39 分钟。

1 linux下xml编辑器  2   3 vim  4 gedit  5 editix             wonderful;免费30天;可以进行有效性检查  6 xerces  7 oxygen            收费  8 xmlcopyedit  9 serna free        是serna的免费版本,开源 10  11  12 xml 库文件 13  14 libxml            c语言使用它解析xml            http://wangjiajun53880.blog.163.com/blog/static/1170013942010119558319/ 15 expat             Expat 是一个用C语言开发的、用来解析XML文档的开发库,它最初是开源的、Mozilla 项目下的一个XML解析器 16  17  18  19 xml文档结构(标记和字符数据) 20  21  22 序言             23  24 XML声明            通常以声明开始(非必需,有则必须放在文档开始的地方)
是否依赖外部DTD 25 PI 处理指令,
26 注释 27 DTD/样式 28 文件类型声明 29 30 31 文档节点 32 33 标签 34 元素 根元素是唯一的;元素的内容可以解析空格,不能包含有特殊意义的字符,用实体代替;元素的嵌套很严格 35 属性 attribute,可以包含在标记中,属性的值必须用引号括起来,属性名和属性值必须成对出现,属性名不能重复,属性值不能包括特殊字符“ < > "&”;避免使用属性,不好解析、扩展 36 文本 37 CDATA 在一个块内,用把内容包住,使在该块中可以不用xml实体。 38 实体 39 注释
,不能在注释中出现“--”,不能嵌套,不能出现在标记中 40 41 42 结构良好的XML文档不一定是有效的文档,但有效的文档一定是结构良好的文档。XMl规范性通过XML语法规则来保证,XML文档的有效性是指XML文档内容中的元素、属性符合其他文档内容(DTD Schema)的定义。利用专用的文档类型定义和专用的解析器可以验证一个XML文档的有效性。 43 44 45 46 命名规则 47 48 不能以数字或标点开始 49 不能以xml,Xml,XML开始 50 不能包含空格 51 52 默认值系统自动分配,不可更改;缺省值也是系统自动分配,可以更改。 53 54 多个单词为一个词时第一个单词首字母不大写,后面的单词首字母大写(自定义)。 55 56 57 58 DTD 文档类型定义(document type definition) 59 60 61 形式为(指示解析器),XML文档必须和一个DTD一起使用,且必须放在文档开头。 62 63 在文档中定义DTD直观且不用担心XML处理器找不到DTD,但是会是文档臃肿,DTD文档不易分享。 64 65 66 外部DTD定义 67 包含body部分。 68 69 引用 70 系统标识符引用外部 DTD 71 公共标志符;这个DTD名字是一个正是公共标志符。 72 73 正式公共标志符 74 -//Owner//class Description//Language//Version 75 例如网页的文档类型声明: 76 77 78 DTD文档结构 79 80 第一行是声明部分,格式与XML文档的声明语法共同。 81 注释和XML文档相同。 82
定义元素 83
定义属性 84
定义实体 85
定义符号 86 彼此独立,无需嵌套,验证有效性时和元素在DTD中声明的顺序无关。 87 88 89 元素内容的类型 90 91 字符串 92 用(#PCDATA)定义的元素不再包含其他子元素。
93 94 ELEMENT型 95 设定元素拥有的子元素和出现的次数和顺序。 96 有序子元素:
,元素名和子元素之间有空格。 97 互斥子元素:
,必须选一个元素,例如
98 子元素出现的频率:‘+’至少出现一次,‘*’出现任意多次,‘?’出现0次或1次,‘none’只能出现一次。例如
99 组合子元素:
100 无序子元素:
101 102 空元素103 没有内容,但可以有属性。104 格式:
,XML文档中元素格式必须是<.../>而不能是<...>
105 106 ANY元素107 元素可以有任何类型的子元素或纯文本或空,但是出现在XML文档中的元素必须在DTD中定义。108 格式:
109 110 MIXED型111 允许混合内容使得字符数据和其他元素能在元素中共存,其子元素出现无序,次数不限,不能用表示频率的符号修饰,#PCDATA必须放在最前面。112
113 114 115 元素属性声明116
元素名 属性名 属性类型 默认值117
一个元素可有多个属性,声明次序无关(可位与声明元素的前面),所有元素的属性都要在各自对应的标记中声明;属性有4中不同类型的默认值;属性有10种不同的类型,由TYPE指定。121 122 属性的默认值:default(一个预设的字符串,如上面的性别); #REQUIRED属性值必须指定; #IMPLIED可指定可不指定; #FIXED属性值是一个固定值(必须是指定的值,定义元素时如果没有定义这个属性,则默认拥有这个属性),
”。130 131 实体可在XML文档和DTD中使用。132 定义:
133 使用:&Entity_name;134 135 外部实体136
,一般为整个文件,PUBLIC表示网络上的文件。137 138 内部参数实体139 指在独立的外部DTD文档内定义和使用的实体,只能在DTD文档中使用。140 定义:
141 引用:%Entity_name;142 143 外部参数实体144 指在独立的外部DTD文档定义和使用的实体,外部参数实体用于将多个独立的DTD文档组合成一个大的DTD文档。145 定义:
146 引用:%Entity_name;147 148 注意149 不能在元素及属性的声明中引用实体。150 语句中不能出现循环。151 引用外部实体时文档中的standalone不再是默认值“yes”,而应该设为“no”。152 如果引用外部实体文档的编码不是utf-8或unicode,必须有XML声明。153 154 155 156 XSD 157 158 159 XML模式(XML Schema [ Definition ])模式可以和DTD相互替代,并且功能更强大。模式使用XML格式编写,格式是基于xml语法的,本身是XML的一个应用,支持命名空间和数据类型。 160 161 根元素:
表明文档类型,声明命名空间(必须),版本信息,语言信息等,只有一个根元素162 163 引用XML Schema 文档 通过定义命名空间164
165 前一个地址是声明命名空间,后一个指明验证的Schema文件的地址,在 xsd 文档中必须声明 sweater 元素。166 167 xsi:noNamespaceSchemaLocation 用于没有目标命名空间的模式文档,属性的值是一个单一的值,用于指定模式文档的位置168 xsi:SchemaLocation 用于有目标命名空间的模式文档,属性的值是由一对或多对 URL 引用对组成,两个URL以空格分开,URL引用对页用空格分开;第一个URL指明名称空间的名字,第二个URL指明模式文档的位置169 170 对局部元素的限定171 elementFormDefault 为 qualified 表示被限定,为 unqualified 表示未被限定;限定时在实例 XML 文档中使用局部元素和局部属性必须引用命名空间,默认人非限定。172 attributeFormDefault 为 qualified 表示被限定,为 unqualified 表示未被限定。173 对局部元素和属性限定直接在 element 和 attribute 加上属性 form 来限定。174 175 176 元素类型177 xs:string 最松散的文本约束,仅仅要求不能出现特殊字符178 xs:int(eger) 必须为数值179 xs:double180 xs:decimal181 xs:boolean true false182 xs:date YYYY-MM-DD183 xs:time184 xs:token185 186 187 两种主要的数据结构 188 189 用他们来定义新的数据类型。190 simpleType 只能包含数据,restriction minLength manLength minExclusive manExclusive191 complexType 可以包含其他元素,属性192 193 命名的简单类型:必须在全局定义,且名称唯一,按名引用。194 匿名的简单内型:作为子元素定义在元素内部195 196 197 简单类型198 199 定义200
201
202 ......203
204
205 206 限制条件207
指定字符串的长度208
指定字符串的长度的最小长度209
指定字符串的最大长度210
指定数值的最小值211
指定数值的最大值212
排除比数值小的值213
排除比数值大的值214
base="xs:decimal"215 216 简单类型的种类217 原子类型 具有不可分割的值218 列表类型list 值是用空格分隔的原子类型的列表219 联合类型union 值可以是原子类型,也可以是列表类型,这种类型是两种或两种以上其他简单类型的值空间的集合220 221 列表类型list222
223
224
225
226
227
228
229
230
231
232 233 枚举型 enumeration 一组简单类型的选项234
235
236
237
238 ...239
240
241 242 243 复杂类型244 245 四种不同的内容内型246 简单内容类型 只允许有字符数据,可以包含属性 complexType -> simpleContent -> extension -> attribute247 纯元素类型 只允许有子元素 sequence248 混合类型 允许有字符数句和子元素,定义时给 complexType 的属性 mixed="true"249 空类型 不允许有字符数据和子元素250 251 sequence 组用来表示组内定义的元素在XML文档中应该按照组内定义的顺序出现 complexType -> sequence252 253 choice 组描述的元素只能选择一个子元素 complexType -> choice254 使用 choice 的 minOccurs 和 maxOccurs 属性可以使 choice 中的元素以任何次数、顺序出现。255 256 all 组表示所有的元素都要出现,且只能出现依次,出现顺序任意 complexType -> all257 258 259 元素声明260
声明一个在XML文档中使用的元素261 262 简单元素 只包含文本的元素263
minOccurs和maxOccurs不能精确控制元素出现的次数,默认出现一次,maxOccurs="unbounded"表示出现无限次;default和fixed不能同时出现;264 265 全局元素是 schema 下的元素,局部元素是 all, choice, sequence 下的元素。266 267 元素类型的定义268 引用命名数据类型 新类型定义在元素定义外面(可见域)269 匿名定义的数据类型 新类型定义在元素定义内部270 ANY元素数据类型 不指定 type, simpleType, complexType;可以有任何子元素,纯字符,属性(不能混合出现)271 272 273 属性声明274
类型和元素类型一样275 276
定义 use 时不能将属性定义为全局的277 278 属性的类型279 通过type指定内值类型和用户自定义类型280 通过simpleType指定匿名类型281 不指定时默认是 anySimpleType ,可以是任意类型282 283 284 285 命名空间 XML命名空间提供了一种可以把元素、属性、名字和URL地址引用相互关联的方法。286 287 288 默认的命名空间声明(没有名称)
289 290 在一个缺省的命令空间中,URL可以为空,这在直接方式命名空间声明中是不允许的;当URL为空时,在声明作用域范围内没有前缀的元素被认为不在任何命名空间中。291 292 元素的属性中不能有两个命名空间相同,且属性名相同的两个属性。293 294 295 声明的一般形式296 xmlns:前缀="URL"297 298 隐式声明默认命名空间 一个文档中只能由一个隐式声明的命名空间299 xmlns="URL"300 301 302 xsd 中命名空间303 304 targetNamespace 声明指示该文档所在的命名空间305
306 307 默认情况下 xsd 文档中只有全局元素、属性和类型属于目标命名空间。308 309 310 311 XSLT XSL 转换(XSL Transformations), 可将一种 XML 文档转换为另外一种 XML 文档,其中一种特例是把XML转换成HTML输出312 313 314 XSL 扩展样式表语言(EXtensible Stylesheet Language),它的初衷是给xml提供样式显示。由 XSLT 、 XPath 以及 XSLF 组成XSLT的主旨更一般化,指可将一种 XML 文档转换为另外一种 XML 文档,常把XSLT称为XLS。315 316 CSS 层叠样式表单(Cascading Style Sheets)CSS 样式单可以为XML文档添加显示信息317 318 引用 XSL 文档319
320 321 声明 XSL 文档322
323 324 XMLT 本身也是 XML 文档,根元素的命名空间为 http://www.w3.org/1999/XSL/Transform 。325 326 在 XMLT 根元素声明为
完全一样。327 328 329 节点类型 XML 文档被映射成一棵树330 根结点(文档节点) 是文档树的根,其子元素为 XML文档的根元素、处理指令、注释等。331 元素节点
hello
332 文本节点 字符数据,包括 CDATA 中的数据333 属性节点 id="1"334 命名空间节点335 处理指令节点336 注释节点337 338 339
340 341 XSL 样式表由一个或多个被称为模板的规则组成,每个模板含有当某个指定的节点被匹配时应用的规则,模板先声明,然后在某个地方调用模板。342 343 模板的声明344
T_name用于描述该模板的相关信息和名称345 346 match 属性用于关联 XML 元素,他的值是 XPATH 表达式。347 348
内部的内容定义了写到输出结果的 HTML 结果。349 350 模板的调用351
模板将在 XSLT 处理器遇到文档节点时自动处理。352 其他模板在
模板中指定匹配路径的方式(使用 xsl:apply-templates)显示或隐式的调用。353 根据模板名称使用
调用354 355 356
把一个模板应用到当前元素或当前元素的子元素,没有select属性时表示选择当前节点的所有子节点357 358 359
提取某个选定节点的值,把值添加到输出流中360
361 select 值为一个 XPATH 值,为必选属性。362 对文本节点和属性节点, xsl:value-of select="." 提取的是文本节点的内容和属性节点的取值。363 对元素节点, xsl:value-of select="." 将得到该元素和其子元素的文本节点之和。364 365
选取指定的节点集中的每个 XML 元素366
...
367 select 值是一个 XPATH 表达式。368 xsl:for-each 开始标记和结束标记之间是一个循环处理的过程体。369 结果过滤 select="catalog/cd[year<'1990']" =, !=, <, >370 371
用于放置针对 XML 文件内容的条件测试372
...
373 374
对结果排序375
376 data-type text | number, 默认 text, 可选377 order ascending | descending, 默认 ascending, 可选378 379
结合起来表达多重条件测试380
381
382 ...383
384
385 ...386
387
388 ...389
390
391 392 393 import include element attribute number param(参数)394 395 396 397 XPath XML匹配模式(XML Pattern Matching)XPath是一种用于标识XML文档各个部分的语言。398 399 400 这是一种为了XSLT 和 XPointer而设计出来的语言;含有超过 100 隔内建函数, 用于字符串值、数值、日期、时间比较、节点和 Qname 处理、序列处理、逻辑值等。401 402 403 选取已知节点的表达式404 nodename 选取此节点的所有子节点; nodename[1] 选取第一个 nodename 元素; nodename[last() - 1] 选取倒数第二个 nodename 元素; nodename[position() < 3] 选取前面两个 nodename 元素; book[price > 9] 选取子元素 price 大与 9 的 book 元素405 / 从根结点选取406 // 选取文档中所有匹配的节点,不考虑他们的位置; //book[@price] 选取所有拥有属性 price 的元素; //book[@price="9"] 选取所有属性值 price 为 9 的 book 元素407 . 选取当前节点408 .. 选取当前节点的父节点409 @ 选取属性; //@name 选取所有属性名位 name 的属性,不管他们的位置410 * 匹配任何元素节点; //* 选取文档中的所有元素411 @* 匹配任何属性节点; book[@*] 选取所有带有属性的 book 元素412 node() 匹配任何类型的节点;413 //book | //title 使用 "|" 选取若干路径,这里表示选择所有的 book 元素和 title 元素414 415 416 轴 被定义成选取相对于当前节点的节点集417 418 ancestor 当前节点的所有先辈419 ancestor-or-self 当前节点的所有先辈和自己420 attribute 当前节点的所有属性421 child 当前节点的所有子元素422 descendant 当前节点的所有后代元素423 descendant-or-self 当前节点的所有后代元素和自己424 following 当前节点结束标签后的所有节点425 namespace 当前节点的所有命名空间的节点426 parent 当前节点的父节点427 preceding 当前节点开始标签之前的所有节点428 preceding-sibling 当前节点之前的所有同级节点429 self 当前节点430 431 432 步( step )433 434 包括435 轴 定义所选节点和当前节点之间的关系436 节点测试 识别轴内部的节点437 0 或多个谓语 更深入的提炼节点集438 439 语法440 axis-name::node-test[predicate]441 442 example443 child::book 选取当前节点子元素的 book 节点444 child::* 选取当前节点的所有子元素445 child::text() 选取当前节点的所有文本子节点446 child::node() 选取当前节点的所有子节点447 child::*/child::price 选取当前节点的所有 price 孙节点448 descendant::book 选取当前节点的所有 book 后代449 ancestor::book450 ancestor-or-self::book451 attribute::price452 attribute::*453 454 455 运算符456 457 | 计算两个节点集; //book | //cd458 or price = 9 or price = 10459 + 6 + 4, 返回 10460 -461 *462 div463 = 返回 true/false464 !=465 <466 <=467 >468 >=469 470 471 核心函数库472 473 函数:函数名 返回类型 参数474 475 节点集函数476 last() 返回一个称为上下文大小的数字,不同于最后一个节点477 position() 返回一个称为上下文位置的数字,比如 position() = last() 测试478 count(node-set) 返回实参节点集中的节点数479 id(object) 返回一个节点集,根据在 DTD 中声明的 ID 类型唯一的选择元素480 481 字符串函数482 string() 把参数对象或上下文节点转换为字符串,合法的参数有节点集、数字、布尔值、或其他任何类型483 concat() 参数为两个或更多字符串,返回字符串的连接484 starts-with() 如果第一个字符串参数以第二个字符串开始则返回 true485 contains() 如果第一个字符串参数包含第二个字符串参数返回 true486 487 布尔函数488 boolean() 不同于 0 或 NaN 的数字为 true ,非空的节点集或字符串为 true489 not() 参数为 false 返回 true490 true() 返回 true491 false()492 lang() 如果上下文节点的语言和参数指定的语言向相同或为子集,返回 true493 494 数字函数495 number() 把可选的参数对象转换为数字。布尔值 true 转换为 1 ,false 转换为 0 ;字符串转换为合理的数字;节点集先转换为字符串,再转换为合理的数字496 sum() 对节点集参数中的所有节点应用 number() 函数后返回他们的和497 floor() 返回不大于数字参数的最大数字498 ceiling() 返回不小于数字参数的最小数字499 round() 返回和数字最接近的整数数字500 501 502 503 XLink XML链接语言(XML Linking Language)链接语言(The XML Linking Language ,XLink), 允许在不同的XML资源之间建立链接关系504 505 XPointer XML指针语言(XML Pointer Language)XML指针语言(The XML Pointer Language ,XPointer), 标识XML文档的内部结构,例如元素、属性、内容等506 507 508 DOM 对象式解析,文档对象模型(Document Object Model)DOM定义处理XML文档的接口、属性和方法,要将文件全部加载后生成树状的模型来处理文档509 510 JDOM java特定文档模型,比使用DOM更快511 512 DOM4J 合并超出基本XML文档的功能,集成了XPATH,XSD等513 514 SAX 流式解析,XML的简单API(Simple API for XML)SAX 是另一种读取和操作XML文档的编程接口,使用顺序读取文档,读完后丢弃515 516 Xquery 一种xml的查询语言,Xquery之于xml就像sql之于数据库。XQuery是基于XPath上的,单独的 XPath 位置路径本身就是有效的517 518 XHTML 可扩展HTML(Extensible HTML)XHTML 使用XML重新定义了HTML 4.01的语法。XHTML 1.0是HTML的下一个版本519 520 XDR 数据简化(XML Data Reduced)XDR是XML模式(XML Schema)的简化版本。IE5.0+浏览器支持XDR521 522 XQL XMl查询语言(XML Query Language)XQL为存放XML文档中的数据提供一种便捷的查询语言523 524 RELAX NG OASIS技术委员会开发的XML模式语言525 526

 

转载于:https://www.cnblogs.com/little-snake/p/5004931.html

你可能感兴趣的文章
尝试记录自己的工作学习
查看>>
centos6.5 安装nginx
查看>>
生成若干个不重复的随机数数组
查看>>
topcoder srm 465 div1
查看>>
多伦多大学 - 学习编程:写出高质量的代码
查看>>
C语言 scanf()和gets()函数的区别
查看>>
密码学===网站的安全登录认证设计
查看>>
如何检测域名是否被微信屏蔽 微信域名检测接口API是如何实现
查看>>
WPF与WinForm开发有什么区别?
查看>>
POJ1611-The Suspects
查看>>
ROS学习之ShadowRepository
查看>>
Spring 中 ApplicationContext 和 BeanFactory 的区别
查看>>
3.28Day09函数
查看>>
Linux Makefile 生成 *.d 依赖文件及 gcc -M -MF -MP 等相关选项说明【转】
查看>>
Linux下安装Python-3.3.2【转】
查看>>
STL杂记
查看>>
LeetCode OJ:Merge Two Sorted Lists(合并两个链表)
查看>>
功能测试
查看>>
Rust的闭包
查看>>
【BZOJ 1901】Dynamic Rankings
查看>>