Xpath,XQuery,DTD
一、Xpath
XPath 是一门在 XML 文档中查找信息的语言;XPath 是 XSLT 中的主要元素。XPath是W3C标准。
1、七种类型节点:元素、属性、文本、命名空间、处理指令、注释、文档节点;
2、节点关系(轴)
parent 当前节点的父节点;
child 当前节点的所有子节点;
ancestor 当前节点的所有上级节点(父、祖父...);
ancestor-or-self 当前节点的所有上级节点及节点本身;
descendant 当前节点的所有下级节点(子、孙...);
descendant-or-self 当前节点的所有下级节点及本身;
preceding-sibling 当前节点之前的所有同级节点;
following-sibling 当前节点之后的所有同级节点;
following 当前节点之后的所有节点;
preceding 当前节点之前的所有节点;
namespace 当前节点的所有命名空间节点;
attribute 当前节点的所有属性;
self 当前节点;
3、选取节点方法:
nodeName 选择此节点的所有子节点;
/ 从根节点选取;
// 从匹配选择当前节点选择文档中的节点,而不考虑它们的位置;
. 选取当前节点;
.. 选取节点的父节点;
@ 选取属性;
* 匹配任何元素节点;
@* 匹配任何属性节点;
node() 匹配任何类型的节点;
name1|name2 选取所有name2和name1元素;
4、谓语
用来查找某个特定节点或者包含某个指定的值的节点,谓语被包含在方括号中;例:
nodeName[1] 选取nodeName的第一个元素;
nodeName[last()] 选取最后一个元素;
nodeName[position()<] 选取前两个元素;
nodeName[@lang] 选择属性有lang的nodename元素;
nodeName[@lang='eng'] 选择属性lang的值为eng的元素;
nodeName[price>30] 选取所有其中price元素大于30的nodeName元素;
5运算符:
+,-,*,div(除),mod(取余),=,!=,<,<=,>,>=,or,and
二、XQuery
1、XQuery 之于 XML 作用就类似于 SQL 之于数据库的作用,是用来查询XML数据,可以用来查询任何XML形态呈现的数据(包括数据库)
2、XQuery使用谓语来限定从文档所提取的数据;
3、XQuery对大小写敏感,其中的字符串可使用单引号或双引号;
4、变量由$并跟随一个名称来进行定义;
5、 :注释:
6、通用比较:=,!=,<,<=,>,>=;
值的比较:eq,ne,lt,le,gt,ge
7、doc("name.xml") 使用此函数来提取XML文档中的数据;
查询示例:doc("books.xml")/bookstore/book[price>30]/title 选取bookstore元素下所有的title元素,且price元素值大于30;
使用FLWOR进行排序(for let where order by return):
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
8、使用data()函数来将获取到的数据展示出来
向html元素插入查询到的元素示例:
<ul>
{
for $x in doc("books.xml")/bookstore/book
order by $x/title
return <li>{data($x/title)}. Category: {data($x/@category)}</li>
}
</ul>
9、自建函数格式
declare function 前缀:name($para as datatype)
AS 返回数据类型
{ }
三、DTD
1、DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块,可被声明于XML文档中,也可作为一个外部引用;
2、所有XML文档构成的模块:元素、属性、实体、PCDATA、CDATA
3、实体引用:<,>,&,",&apos
4、元素声明:
<!ELEMENT element-name category> 或 <!ELEMENT element-name (element-content)>
<!ELEMENT element-name EMPTY> 空元素
<!ELEMENT element-name(#PCDATA)> 只有PCDATA的元素
<!ELEMENT element-name ANY)> 带有任何内容的元素
<!ELEMENT element-name (childname1,...)> 带有子元素的元素
<!ELEMENT element-name (childname+)> 子元素最少出现一次
<!ELEMENT element-name (childname*)> 子元素出现一次或多次
<!ELEMENT element-name (childname?)> 子元素出现0次或一次
<!ELEMENT element-name (childname1|childname2)> 或
5、属性声明
<!ATTLIST element-name attribute-name attribute-type attribute-value>
属性类型(attribute-type):
CDATA 字符数据
(va1|va2|...) 枚举
ID 唯一的ID
IDREF 值为另一个元素的ID
IDREFS 值为ID的列表
NMTOKEN 合法的XML名称
NMTOKENS 合法的XML名称列表
ENTITY 实体
ENTITYS 实体列表
NOTATION 符号的名称
xml: 值是一个预定义的XML值
属性值(attribute-value):
一个值 给定的默认值
#REQUIRED 必填
#IMPLIED 非必填
#FIXED value 属性值是固定的
6、实体(用于定义引用普通文本或特殊字符的的快捷方式的变量,实体引用是对实体的引用)
实体可在内部和外部声明
<!ENTITY entity-name "entity-value"> 内部声明
<!ENTITY entity-name SYSTEM "URL"> 外部声明
示例:
DTD
<!ENTITY writer "This is a writer">
<!ENTITY copyright "I do not care what it is">
XML实例:
<author>&writer;©right;</author>
7、验证(javascript)
示例:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.validateOnParse="true"; //值设为false就可以关闭验证
xmlDoc.load("note_dtd_error.xml");
document.write("<br />Error Code: ");
document.write(xmlDoc.parseError.errorCode);
document.write("<br />Error Reason: ");
document.write(xmlDoc.parseError.reason);
document.write("<br />Error Line: ");
document.write(xmlDoc.parseError.line);
Xpath,XQuery,DTD的更多相关文章
- XML中的XPATH和DTD
大家好,乐字节小乐又来了,上次给大家说道的是XML解析,这次接着讲述XML文档中的语言:XPATH.DTD 一.先来说说XPATH 1.XPATH 概念 XPath 是一门在 XML 文档中查找信息的 ...
- XML & XPath & XQuery
XML & XPath & XQuery full XPath demo https://www.w3.org/TR/xpath-full-text-30/ https://www.w ...
- XPath常用定位节点元素语句总结
将一个XML或HTML文档转换成了DOM树结构后,如何才能定位到特定的节点?XPath实现了这样的功能,它通过DOM树中节点的路径和属性来导航,通过XPath路径表达式可以选择DOM树中的nodes( ...
- Xpath常用总结
XPath常用定位节点元素语句总结 将一个XML或HTML文档转换成了DOM树结构后,如何才能定位到特定的节点?XPath实现了这样的功能,它通过DOM树中节点的路径和属性来导航,通过XPath路径表 ...
- C# XML技术总结之XDocument 和XmlDocument
引言 虽然现在Json在我们的数据交换中越来越成熟,但XML格式的数据还有很重要的地位. C#中对XML的处理也不断优化,那么我们如何选择XML的这几款处理类 XmlReader,XDocument ...
- 【Java】Java XML 技术专题
XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XM ...
- Java数据库编程及Java XML解析技术
1.JDBC概述 A. 什么是JDBC? Java DataBase Connectivity:是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成.通过这些类和接口 ...
- XML Schema命名空间解析
URI Web中汇集了各种资源.资源可以是具有标识的任何事物, 如文档. 文件. 菜单项. 计算机. 服务等, 甚至可以包括人. 组织和概念[BernersLee 1998].在Web体系结构中, ...
- some things
////html[1]/body[1]/div[9]/div[1]/div[1]/div[1]/ul/li 截取规则 Articles/Article[1]:选取属于Articles子元素的第一个A ...
随机推荐
- 009.C++ const使用
1.引例 class complex { public: complex(, ) : re (r), im (i) {} complex& operator += (const complex ...
- ubuntu学习命令
1.双系统下挂载windows硬盘 检测ntfs-3g是否安装:locate ntfs-3g 没有则安装: sudo apt-get install ntfs-3g 查看硬盘信息: sudo fdis ...
- codeforces 876 C. Classroom Watch
http://codeforces.com/contest/876/problem/C C. Classroom Watch time limit per test 1 second memory l ...
- UVA 1650 Number String
https://vjudge.net/problem/UVA-1650 题意:D表示比前一个数打,I表示比前一个数小,?表示不确定 给出一个长为n由D I?组成的字符串,问满足字符串大小要求的n+1的 ...
- 《JavaScript 实战》:Tween 算法及缓动效果
Flash 做动画时会用到 Tween 类,利用它可以做很多动画效果,例如缓动.弹簧等等.我这里要教大家的是怎么利用 Flash 的 Tween 类的算法,来做js的Tween算法,并利用它做一些简单 ...
- HDFS默认副本数为什么是3
转载自: https://www.cnblogs.com/bugchecker/p/why_three_replications_for_HDFS_in_engineer.html HDFS采用一种称 ...
- 【BZOJ】2553: [BeiJing2011]禁忌 AC自动机+期望+矩阵快速幂
[题意]给定n个禁忌字符串和字符集大小alphabet,保证所有字符在集合内.一个字符串的禁忌伤害定义为分割能匹配到最多的禁忌字符串数量(一个可以匹配多次),求由字符集构成的长度为Len的字符串的期望 ...
- 【BZOJ】4318: OSU! 期望DP
[题意]有一个长度为n的01序列,每一段极大的连续1的价值是L^3(长度L).现在给定n个实数表示该位为1的概率,求期望总价值.n<=10^5. [算法]期望DP [题解]后缀长度是一个很关键的 ...
- win8扁平风格的物流公司网站后台管理模板——后台
链接:http://pan.baidu.com/s/1o79Zp2M 密码:tqrz
- 海洋CMS v6.53 v6.54命令执行
测试下载地址:https://pan.baidu.com/s/1jHQBKFk 至于分析实在是看的一脸懵逼就不累赘了.直接上exp POST /haiyang/upload/search.php HT ...