.
单个的圆点 (.) 表示当前节点 ..
连续两个圆点 (..) 表示当前节点的上一级节点。
元素名
元素名用于选择当前上下文中具有指定名称的所有元素。 例如:
/persons/person 表示选择 persons 根元素下的所有名为 person 的元素节点。
属性名
为了与元素名称相区分,通过在属性名称的前面增加 @ 符号来表示这是属性的名称。 例如:
/persons/person/@name 表示获取 person 元素的 name 属性的值。
特殊的节点处理:
对于一些没有名称的节点,通过特殊的函数来取得,例如: text() 取得文本内容节点 comment() 取得注释节点 processing-instruction() 取得处理指令的节点
还有一些特殊的通配符号
*
匹配任何类型的元素节点
不匹配任何属性、文本节点、注释或处理指令
可以在 * 前添加名称空间,只处理指定的名称空间元素
匹配所有节点:元素、文本、属性、处理指令、名称空间和注释 匹配所有的属性节点
可以在通配符中添加名称空间,如@xlink:*
node() @*
多种匹配可以进行组合,通过 | 可以合并节点的集合
// 从所有的后代中获得
从当前节点开始不考虑层次的选择节点 例如:
//person 表示从当前的上下文中,不考虑层次的获取所有的 person 元素。
谓词:[ ]
谓词相当于 SQL 中的 Where 条件,可以用于筛选符合条件的节点 例如:选择 子元素 profession 的值为 ?physicist?的元素 //profession[ profession=?physicist?]
谓词中的逻辑运算 and 与运算 or 或运算
数学运算
XPath 提供了 5 种基本的算术运算符 ? + ? - ? * ? div 除法 ? mod 取模
字符串运算
? ? ? ? ? ?
= != > < <= >=
布尔值
? true()
? false() ? not()
函数的返回值类型
? ? ? ?
布尔值 数字 节点集 字符串
处理节点的函数
? ? ? ? ? ? ?
position() last() count() id() local-name namespace-uri name
返回当前节点的位置序号
返回上下文节点集中的节点数 返回节点集参数中的节点数
返回文档中具有指定 id 的节点集的集合 返回第一个节点的本地名
返回第一个节点的名称空间URI 返回第一个节点的带有前缀的名称
字符串函数
? ? ? ? ? ? ? ?
string starts-with contains substring-before substring-after substring string-length() normalize-space
检查第一个参数是否以第二个参数开始 检查第一个参数是否包含第二个参数
返回第一个参数中,第二个字符串第一次出现之前的子字符串 返回第一个参数中,第二个字符串第一次出现之后的子字符串 返回第一个参数字符串中从第二个参数开始,第三个参数个字符 返回字符串的长度
格式化元素内容中的空白
XSLT
XSL (扩展样式表语言) 是一种脚本语言,有两个部分组成,
1、 用来将 XML 文件转换成另一个 XML 文件,称为 XSLT (XSL-Transformation)。 2、 格式化 XML 文件。称为 FO(XSL Formatting Object)。
由于 FO 一直没有成为正式的标准,所以使用较少,我们学习属于转换部分 XSLT
XSLT 是一种 XML 应用,通过指定 XML的转换规则来对 XML 文档进行转换。
XSLT 工作原理,首先建立 XML 文件的转换模板,通过 XSLT 处理器,产生最后转换的结果。
开始,模版和取值
例如,有如下 XML 文件
大家好
可以使用如下文件进行转换