1.XPath简介
2.节点
3.轴
4.节点测试
5.表达式
1.什么是 XPath?
- XPath 使用路径表达式在 XML 文档中进行导航
- XPath 包含一个标准函数库
- XPath 是 XSLT 中的主要元素
- XPath 是一个 W3C 标准
2.节点:
在 XPath 中,有七种类型的节点:
元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML
文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
<?xml version="1.0" encoding="utf-8" ?>
<!-- simplexml.xml -->
<!-- simple xml document -->
<book title="java how to program " >
<simple>
<![CDATA[
//Java comment
if(pageCount > index )
{
index++;
}
]]>
</simple>
JAVA How to Program By ..
</book>
-根节点
|
|--指令节点xml
|--注释节点simplexml.xml
|--注释节点simple xml document
|--元素节点book
|
|--属性节点title
|--元素节点simple
|
|--文本节点//java comment
|if(pageCount> index)
|{
|index++;
|}
|
|--文本节点JAVA How to Program By ..
3.轴
xpath.xml:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="xpath.xsl" type="text/xsl" ?>
<books title="轴" >
<book id="id01">
<name>XML入门指南</name>
<publisher>清华大学出版社</publisher>
</book>
<book id="id02">
<name>XPath入门指南</name>
<publisher>电子机械出版社</publisher>
</book>
<book id="id03">
<name>XSL入门指南</name>
<publisher>清华大学出版社</publisher>
</book>
</books>
xpath.xsl:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head><title>
<xsl:value-of select="books/ attribute::title"/>
</title></head>
<body>
<xsl:apply-templates select="books/book[attribute::id='id02']" />
</body>
</html>
</xsl:template>
<xsl:template match="books/book[attribute::id='id02']">
<h3 style="color:red;">当前节点的ID:
<xsl:value-of select="attribute::id"/>
</h3>
前向轴child下第一个book节点下的name节点:<br/>
<xsl:value-of select="child::name"/><br/>
反向轴ancestor包含的节点:<br/>
<xsl:value-of select="ancestor::node()" /><br/>
前向following包含的节点 :<br/>
<xsl:value-of select="following::node()" /><br/>
轴attribute :<br/>
<xsl:value-of select="attribute::id"/>
</xsl:template>
</xsl:stylesheet>
效果:
当前节点的ID:id02
前向轴child下第一个book节点下的name节点:XPath入门指南
反向轴ancestor包含的节点:
XML入门指南清华大学出版社 XPath入门指南 电子机械出版社 XSL入门指南 清华大学出版社
前向following包含的节点 :
轴attribute :
id02
解释:
前向轴:表示当前节点往下
反向轴:表示当前节点往上
self选取当前节点
parent选取当前节点的父节点
child选取当前节点的所有子元素
ancestor选取当前节点的所有先辈(父、祖)
ancestor-or-self选取当前节点的所有先辈和当前节点本身
descendant选取当前节点的所有后代元素(子、孙)
descendant-or-self选取当前节点的所有后代元素(子、孙)以及当前节点本身
following选取文档中当前节点的结束标签后的所有节点
following-sibling选取当前节点后面的同胞节点
preceding选择当前节点开始标签前的所有节点
preceding-sibling选择当前节点开始标签前的同胞节点
attribute选取当前节点的所有属性
namespace选取当前节点的所有命名空间节点
一些简写
完整形式简写形式
child::可直接省去如:/child::node() 等价于/node()
attribute::(@)如 attribute::xx 等价于 @xx
/descendant-or-self::node()/简写为两个斜杠(//)
self::node()简写为一个点号(.).node()
parent::node()..node()
4.节点测试
节点测试说明
*选择同一主要类型的所有子节点
node()匹配i任何节点
text()匹配i文本 节点
comment()匹配注释节点
processing-instruction()匹配处理指令节点
节点名称匹配带有指定节点名的所有节点
<xsl:node-name > 标记用于显示XML标记的名称。
<xsl:attribute> 元素用于向元素添加属性。
<xsl:element> 元素用于在输出文档中创建元素节点。
在XSL中提供了三种布尔运算符:$and$ (&&)、 $not$ (||)、 $or$ 。可以构成逻辑表达式,来设置对数据筛选条件。
<xsl:attribute> 元素用于向元素添加属性。
<xsl:element> 元素用于在输出文档中创建元素节点。
在XSL中提供了三种布尔运算符:$and$ (&&)、 $not$ (||)、 $or$ 。可以构成逻辑表达式,来设置对数据筛选条件。
5.表达式
XPath表达式是由一系列定位步骤组成的定位路径。
定位步骤的基本语法如下所示:
轴::节点测试【谓词】
1)轴:用来确定搜索的方向
2)节点测试:用来确定匹配节点类型
3)谓词:用来对符合匹配类型的节点进行筛选