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 ...
随机推荐
- MyEclipse解决Launching xx on MyEclipse Tomcat has encountered a problem
单击工具栏Run,选中Run Configurations... 将MyEclipse Server Application里面的工程右击选择Delete就好了.
- hdu 1907 John (anti—Nim)
John Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)http://acm.h ...
- Python学习笔记(三十五)—内置模块(4)struct
摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431955007 ...
- PHP提取链接批量下载
2014年年初的时候,曾经受委托完成一个视频网站,那时最大的技术障碍是一个大视频比如500MB,在一个带宽环境不怎么快的服务器(比如1Mbps)上提供播放的问题. 这里会遇到两种情况,第一种情况是客户 ...
- angular package.json中start build
"start": "ng serve --host 0.0.0.0 --port 4200 --proxy-config proxy.conf.json", & ...
- 【CodeForces】708 C. Centroids 树的重心
[题目]C. Centroids [题意]给定一棵树,求每个点能否通过 [ 移动一条边使之仍为树 ] 这一操作成为树的重心.n<=4*10^5. [算法]树的重心 [题解]若树存在双重心,则对于 ...
- 【文件上传】jquery之ajaxfileupload异步上传插件
来自:http://www.blogjava.net/sxyx2008/archive/2010/11/02/336826.html 由于项目需求,在处理文件上传时需要使用到文件的异步上传.这里使用J ...
- three.js_camera相机
https://blog.csdn.net/yangnianbing110/article/details/51275927 文章地址
- 一个JAVA渣渣的校招成长记,附BAT美团网易等20家面经总结
欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享美文,分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取): 今天分享一篇牛客网上的一个 ...
- option和 usb-serial驱动基本区别
option.c This driver exists because the "normal" serial driver doesn't work too well wit ...