分享
 
 
 

xpath应用举例

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Xml文件为

<?xml version="1.0" encoding="gb2312"?>

<?xml-stylesheet type="text/xsl" href="test.xsl"?>

<root>

<question id="1">

<tit>

孙燕姿的第一专辑叫什么?

</tit>

<A>未完成</A>

<B>绿光</B>

<C>我的纪念册</C>

<D>灰姑娘的眼泪</D>

<num>12</num>

</question>

<question id="2">

<tit>

最能反映大哥风范的电影是下面的哪部

</tit>

<A>蛊惑仔之龙争虎斗</A>

<B>刀手</B>

<C>英雄本色</C>

<D>花样年华</D>

<num>20</num>

</question>

</root>

xsl文件为

<?xml version="1.0" encoding="gb2312"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">

<html>

<head>

<title>xpath example</title>

</head>

<body>

<center><p>调查报告</p></center>

<center>

<table border="1">

<tr>

<td>ID</td>

<td>Title</td>

<td>A</td>

<td>B</td>

<td>C</td>

<td>D</td>

<td>Num</td>

</tr>

<xsl:apply-templates select="root/question[@id='1']"/>

</table>

</center>

</body>

</html>

</xsl:template>

<xsl:template match="root/question">

<tr>

<td><xsl:value-of select="@id"/></td>

<td><xsl:value-of select="tit"/></td>

<td><xsl:value-of select="A"/></td>

<td><xsl:value-of select="B"/></td>

<td><xsl:value-of select="C"/></td>

<td><xsl:value-of select="D"/></td>

<td><xsl:value-of select="num"/></td>

</tr>

</xsl:template>

</xsl:stylesheet>

xsl文件主要在<xsl:apply-templates select="root/question[@id='1']"/>

此时代表选择id为1的那个行

如果改为<xsl:apply-templates select="root/question[num div 20 &lt; 1]"/>则显示num小于20的那行(注意小于号要用&lt;代替)

如果改为<xsl:apply-templates select="root/question[contains(tit,'最能反映大哥风范的电影')]"/>则表示tit的内容前边几个词为“最能反映大哥风范的电影”显示那行

所以xpath主要处理xml的函数或方法有

1:节点集函数

节点集函数提供关于一组节点(一个或多个节点)的信息。常用的节点集函数有

last()――返回一个称为上下文大小的数字,即给定上下文中的节点数,不同于最后一个节点。

position()――返回一个称为上下文位置的数字,集当前节点在给上下文节点集(列表)中的位置。比如,可以用表达式 position()=last() 测试处理的是否是集合中的最后一个节点。

count(node-set)――返回实参节点集中的节点数。比如,在 AuctionItemList.xml 文档的上下文中,count(//item) 返回 item 元素的个数,即 7。

id(object)――返回一个节点集,根据在 DTD 中声明为 ID 类型的唯一标识符选择元素。因为在 AuctionItemList.xml 中没有使用 DTD,这个例子中得到的节点集总是空集。Id("ItemId0001") 返回一个空节点集。

XPath 还定义了和节点名及名称空间有关的其他三个函数:

local-name()

namespace-uri()

name()

2:字符串函数

通过字符串函数您可以操纵字符串。常用的字符串函数有:

string()――把参数对象或者上下文结点转化成字符串。合法的参数包括节点集、数字、布尔值或者其他任何类型――但是对于最后一种情况转换的结果不可预料。建议使用 XSLT 函数 format-number 把数字转化成字符串,或者使用 XSLT 元素 xsl:number 提供给用户。

concat()――以两个或更多字符串作为参数并返回这些字符串的连接。比如,concat("Original ","recording ","Blue Train LP record") 返回 "Original recording Blue Train LP record"。

starts-with()――如果第一个字符串参数以第二个字符串参数开始则返回 true,否则返回 false。比如,starts-with("Miles Smiles album, CD", "Miles") 返回 true。

contains()――如果第一个字符串参数包含第二个字符串参数则返回 true,否则返回 false。比如,contains("Miles Smiles album, CD", "album") 返回 true。

其他的 XPath 字符串函数包括:substring()、substring-before()、substring-after()、string-length()、normalize-space() 和 translate()。详请参阅 XPath 1.0 规范的 4.2 节。

3:布尔函数

布尔函数用于把一个对象或字符串转化成 true 或者 false,或者直接获得真或假的值。布尔函数有:

boolean()――根据以下规则返回作为参数传递的对象转换成布尔值的结果:不同于 0 或者 NaN 的数字为 true;非空的节点集或者字符串为 true。其他类型的对象已不可预料的方式转换。

not()――如果作为参数传递的布尔值为 false 返回 true,否则返回 false。

true() 和 false()――分别返回 true 或 false。这些函数很有用,因为在 XPath 中 true 和 false 被看作是普通的字符串而不是真和假的值。

lang()――如果上下文节点的语言和字符串参数中指定的语言相同,或者是它的一种子语言返回 true,否则返回 false。上下文节点的语言通过 xml:lang 属性的值定义。比如,lang("en") 对于 AuctionItemList.xml 树中的任何节点都返回 false,因为没有指定 xml:lang 属性。

4:数字函数

数字函数是 XPath 的数值函数,都返回数字。其中包括:

number()――把可选的对象参数(如果没有指定参数则使用上下文节点)转化成数字,转换的规则如下:

布尔值 true 转换成1,false 转换成 0。

字符串转换成合理的数字。

节点集首先转换成字符串,然后把这个字符串转换成数字。

其他类型对象以不可预料的方式转换。比如,number("250") 返回 250,而 number("miles1965") 返回 NaN。

sum()――对节点集参数中的所有节点应用 number() 函数后返回它们的和。

floor()――返回不大于数字参数的最大整数数字。比如,floor(2.75) 返回 2

ceiling()――返回不小于数字参数的最小整数数字。比如,ceiling(2.75) 返3

round()――返回和数字参数最接近的整数数字。比如,round(2.75) 返回 3。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有