xml:
有且只有一个根元素
默认utf-8 如果是中文且为不是utf-8的必须指定编码
声明的编码必须和文档的内容保持一致
well-formed XML :是否符合xml语法
valid xml:验证此xml是否符合dtd规则 dtd定义了哪些:
1.元素定义规则,只能有哪些标签
2.元素间关系的的定义,标签出现的顺序,位置
3.使用的实体或符号规则 &lt &copy //行内dtd写法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root[
<!ELEMENT root EMPTY>
]>
<root></root>
//外部dtd写法 ,对于公共dtd如果浏览器能识别名称,则不会在去请求dtd文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "test.dtd">
<root /> //test.dtd
<!ELEMENT root EMPTY> PCDATA:解析
CDATA:不解析,这样就可以不用在乎里面的特殊字符 元素声明使用<!ELEMENT 元素名称 (元素内容)>或<!ELEMENT 元素名称 类别>的语法<!ELEMENT root EMPTY> //EMPTY关键字表示元素是个空元素
<!ELEMENT root ANY> //ANY关键字表示元素中可以出现任何内容,也可以为空
//下面这个声明表示root中可以有文本,也可以是空
<!ELEMENT root (#PCDATA)> //()表示一个分组,其中是放的允许在元素出现的内容,#PCDATA表示文本
<!ELEMENT root (child)> //child是子元素的名称,这个声明表示root中必须且只能有一个child元素
<!ELEMENT root (child1,child2)> //以逗号分隔,表示子元素依次出现
<!ELEMENT root (child1|child2)> //竖线与"OR"的意思相近,表示root元素中只能出现child1或child2
<!ELEMENT root (child?)> //root中child子元素可以出现一次,也可以不出现
<!ELEMENT root (child+)> //root中child子元素至少出现一次
<!ELEMENT root (child*)> //root中child子元素可以出现任意次数或不出现
<!ELEMENT root (child,(a,b))> //()还可以嵌套,这里表示root元素中第一次子元素必须是child
//紧接着是a或b
<!ELEMENT root (child,(a,b)+)> //*,?,+这些量词可作用于分组,这里表示root元素中第一次子元素必须是child
//紧接着是a或b出现一次或多次 属性声明使用<!ATTLIST 元素名称 属性名称 属性类型 默认值>的语法.示例如下:
类型 描述
CDATA 值为字符数据 (character data)
(en1|en2|..) 此值是枚举列表中的一个值
ID 值为唯一的 id
IDREF 值为另外一个元素的 id
IDREFS 值为其他 id 的列表
NMTOKEN 值为合法的 XML 名称
NMTOKENS 值为合法的 XML 名称的列表
ENTITY 值是一个实体
ENTITIES 值是一个实体列表
NOTATION 此值是符号的名称
xml: 值是一个预定义的 XML 值 值 属性的默认值.该属性可以出现,也可以不出现,当没有明确指定该属性时,属性值使用默认值
#REQUIRED 属性值是必需的
#IMPLIED 属性不是必需的,可以出现,可以不出现
#FIXED value 属性值是固定的.属性可有可无,但有的时候,其值必须是value <!ATTLIST img src CDATA #REQUIRED> //img元素的src属性是必须的,值为字符串
<!ATTLIST script type CDATA "text/javascript"> //script元素的type属性默认值是text/javascript
<!ATTLIST div id ID #IMPLIED> //div元素的id属性是唯一的ID标识,可有可无
<!ATTLIST input type(text|radio|checkbox) "text"> //input元素的type属性是三个值中的一个,默认值是text
<!ATTLIST label for IDREF #IMPLIED> //label元素的for属性是页面中另一个元素的ID 实体的定义:
//一般实体定义
<!ENTITY abc "ABCabcABC"> //内部实体
<!ENTITY abc SYSTEM "abc.ent"> //外部私有实体
<!ENTITY test PUBLIC "-//AjaxLife//ENTITIES TEST 1 for XML//EN" "test.ent"> //外部公共实体
//实体引用
<abc>&abc;</abc> //参数实体 只在dtd文件中用
<!ENTITY % abc "root">
<!ELEMENT %abc; (child)>//这句将声明元素root,具有一个子元素child xml中引入样式表:<?xml-stylesheet type="text/css" href="http://test.cm/test.css"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="http://test.cm/test.css"?>
<!DOCTYPE root [
<!ELEMENT root ANY>
<!ELEMENT node ANY>
<!ATTLIST node
name (a|b|c) 'a'
age CDATA '24'
id ID #IMPLIED
for IDREF 'f'
fors IDREFS 'a'
>
<!ENTITY sjk "songjiankang"> ]>
<root>
<node id="f"></node>
<node id="a"></node>
<node for="a"></node>
<node fors="a f">&sjk;</node>
</root> xpath:
body//p 后代元素
body/p 子元素 /root {选取root
root {选取root
child {空,因为child不是document的子元素
//child {选取两个child元素,//表示后代
//@attr {选取attr属性节点
/root/child//desc {返回child的后代元素desc /root/child[3] {选取root元素的第三个child子元素,注意,这和数组下标不一样,从1开始计数
//child[@attr] {选取所有具有属性attr的child元素
//child[@attr="val"]/desc {选取所有属性attr的值为val的child元素的子元素desc
//child[desc] {选取所有的有desc子元素的child
//child[position()>3] {position()是XPath中的一个函数,表示节点的位置
//child[@attr>12] {XPath表达式还可以进行数值比较,该表达式将选取attr属性值大于12的child元素
//child[last()] {last()函数返回节点列表最后的位置,该表达式将选取最后一个child元素 * ,和CSS中的选择符一样,这将匹配任何元素节点
@* ,匹配任何属性节点
node() ,匹配任何类型的节点 /root/* {选取根元素下面的所有子元素
/root/node() {选取根元素下面的所有节点,包括文本节点
//* {选取文档中所有元素
//child[@*] {选取所有具有属性的child元素
//@* {选取所有的属性节点

  

  xsl:扩展样式表语言,主要用来对xml文档进行格式化
  包括:1.xslt:将一个xml文件转换成另一种格式的xml文件或xhtml文件
    2.xpath
    3.xsl-fo 用来格式化xml

 

xml xpath dta笔记的更多相关文章

  1. Linq to XML 读取XML 备忘笔记

    本文转载:http://www.cnblogs.com/infozero/archive/2010/07/13/1776383.html Linq to XML 读取XML 备忘笔记 最近一个项目中有 ...

  2. PHP操作XML文件学习笔记

    原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...

  3. JavaEE XML XPath

    JavaEE XML XPath @author ixenos XPath技术 1 引入 问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!需要遍历DOM树的众多节点 ...

  4. XPath相关笔记

    <?xml version="1.0" encoding="utf-8" ?> <employees>   <employee o ...

  5. WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题

    今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...

  6. XML & XPath & XQuery

    XML & XPath & XQuery full XPath demo https://www.w3.org/TR/xpath-full-text-30/ https://www.w ...

  7. xml基础学习笔记05

    Xpath快速解析 如题一样,本篇主要说说Xpath快速查找XML文档   * Xpatn.Xquery,是专门用来查询xml的语言   * 查询xml非常快   Xpatn.Xquery,是专门用来 ...

  8. xml基础学习笔记04

    今天继续xml学习,主要是:SimpleXML快速解析文档.xml与数组相互转换 .博客中只是简单的做一个学习记录.积累.更加详细的使用方法,可以查看php手册 1.SimpleXML快速解析文档 前 ...

  9. Xpath学习笔记

    最近复习自己上一年的课本,想起来刚学那个时候想做一个写日记的软件. 想不如做,用控制台瞎写了一个,一做就成了,没什么bug,期间使用Xpath来读数据,所以就稍微学了一下. 学习过程就这样做一点笔记, ...

随机推荐

  1. Spring Boot中Request method 'PUT' not supported

    在项目中使用restful风格put提交时报错,是由于form表单中的th:href引起的(支持post提交),改为th:action即可

  2. 25.最小生成树(kruskal算法)

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立 ...

  3. SCOJ 4429: frog's dice 最大流

    4429: frog's dice 题目连接: http://acm.scu.edu.cn/soj/problem.action?id=4429 Description frog has many d ...

  4. CC1101是一种低成本真正单片的UHF收发器

    CC1101是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计.电路主要设定为在315.433.868和915MHz的ISM(工业,科学和医学)和SRD(短距离设备)频率波段,也可以容易地设置 ...

  5. x-requested-with 请求头 区分ajax请求还是普通请求

    在服务器端判断request来自Ajax请求(异步)还是传统请求(同步): 两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1.传统同步请求参数 accept  t ...

  6. Shell编程入门(第二版)(中)

    注:test測试语句一般不单独使用,一般作为if语句的測试条件,如; if test -d file then .... fi test的变量的简写形式"[]" 演示样例-apac ...

  7. 《Linux兵书》

    <Linux兵书> 基本信息 作者: 刘丽霞    杨宇 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121219924 上架时间:2014-1-13 出版日期:20 ...

  8. getmask

    #include "stdio.h" #include "stdlib.h" #include "string.h" #include &q ...

  9. 世界围棋人机大战、顶峰对决第一盘:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序

    Match 1 - Google DeepMind Challenge Match: Lee Sedol vs AlphaGo 很多网站对世界围棋大战进行了现场直播,比如YouTube.新浪.乐视.腾 ...

  10. 错误Name node is in safe mode的解决方法 (转)

    原文链接:错误Name node is in safe mode的解决方法 将本地文件拷贝到hdfs上去,结果上错误:Name node is in safe mode 这是因为在分布式文件系统启动的 ...