
XPath的语法 我们在前面已经提到过 XPath是用来帮助XSLT在XML源文档中查找定位信息的语言 在实际使用过程中 XPath和XSLT总是混在一起使用 在上面一章的语法例子中我们已经有使用到XPath的语法 只是没有明确点出 但W C将它们分成两个标准 所以我们也将它们拆成两章来讲解
XPath的语法
当前位置 寻址 *** 作 运算符 功能函数
当前位置
当我们使用XSLT处理XML源文档是 我们用Context来表示当前正在被模板处理的节点位置 比如xsl:template match= / 语句中表示Context在文档的根(root)节点 我不知道如何准确的翻译Context这个词 它类似于C语言里的指针 表示程序当前运行的位置 理解Context对于正确处理XSL模板非常重要 当您的XSL模板输出的文档和您想要的不一样 最先应该分析的就是Context在哪里 Location Paths是用于设定你想要寻找的Context节点位置 就类似DOS的目录命令 我们看个例子
<xsl:for each select= child::PEOPLE/descendant::PERSON >
其中child::PEOPLE/descendant::PERSON就是XPath语法 这个表达式就是一个Location Paths 代码说明要显示所有PEOPLE元素的子元素和所有PERSON元素的子元素 通常我们会采用更简单的写法
<xsl:for each select= PEOPLE//PERSON >
我们来解释path的两种表示方法 / 和 // / 是表示当前文档的节点 类似DOS目录分割符 例如 /PEOPLE表示选择根节点下的PEOPLE元素 PEOPLE/PERSON表示选择PEOPLE元素下所有的PESON子元素 // 则表示当前文档所有的节点 类似查看整个目录 例如 //PEOPLE表示选择文档中所有的PEOPLE元素 无论它在什么层次 PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素 无论它的层次多深
寻址 *** 作
Axis和Predicate是XPath语法中对Location Paths进行定位 *** 作的语法 具体的用法列表如下
Axis语法表 表达式 简写 说明 self 选择当前的节点 例子 : <TD><xsl:value of select= /></TD> 代码表示在当前位置插入当前的节点包含的文本(text)值 parent 选择当前节点的父节点 attribute @ 选择一个元素的所有属性 例子: <TD><xsl:value of select= @PERSONID /></TD> 选择PERSON元素的所有属性 child 选择当前节点的所有子元素 ancestor 选择当前节点的所有父元素(包括父元素的父元素 类推)
Axis帮助我们选择当前节点周围所有的节点 而Predicate则用来定位当前节点内部的元素 表示方法为方括号[]中加表达式 [ Expression ] 具体举例如下:
PERSON[position()= ] 这句代码表示寻找第二个 PERSON 元素
PERSON[starts with(name B )] 这句代码表示寻找所有名称以 B 开头的PERSON元素
运算符
这一节介绍XPath的运算符(Expressions) 列表如下 运算符 说明 and or 就是普通意义的and or = 等于 != 不等于 > >= 大于 大于等于 < <= 小于 小于等于 注意 在XSL文件中 <符号要用< 表示 div 加减乘除 mod 取模 | 两个节点一起计算
功能函数(Functions)
在XPath里有很多功能函数可以帮助我们精确寻找需要的节点
count()功能 作用 统计计数 返回符合条件的节点的个数 举例 <p><xsl:value of select= count(PERSON[name=tom]) /></p> 说明 代码的用途是显示PERSON元素中姓名属性值为tom有几个
number()功能 作用 将属性的值中的文本转换为数值 举例 <p>The number is: <xsl:value of select= number(book/price) /></p> 说明 代码的用途是显示书的价格
substring() 功能 语法 substring(value start length) 作用 截取字符串 举例 <p><xsl:value of select= substring(name ) /></p> 说明 代码的用途是截取name元素的值 从第一个字母开始显示到第三个
sum()功能 作用 求和 举例 <p>Total Price = <xsl:value of select= sum(//price) /></p> 说明 代码的用途是计算所有价格的和
上面这些功能只是XPath语法中的一部分 还有大量的功能函数没有介绍 而且目前XPath的语法仍然在不断发展中 通过这些函数我们可以实现更加复杂的查询和 *** 作
lishixinzhi/Article/program/ASP/201311/21862
用EXCEL表格和软件打开xml文件的方法具体步骤介绍
XML是Extensible Markup Language的简写,一种扩展性标识语言。
现在教你打开xml文件的方法和软件。
呵,其实最简单的就是用EXCEL表格打开了。。
也可以用Netscape 6来打开XML文档,并且也可以用右键选择“察看源文件”
当你用Netscape 6打开XML文档后,
浏览器将用带颜色的代码显示根元素和子元素。
如何在 Excel 中打开文件
在 Excel 中打开 XML 文件时,系统将提示您选择下列方法之一来导入 XML 数据:作为 XML 列表
作为只读工作簿
使用“XML 源”任务窗格
作为 XML 列表打开文件
当打开 XML 源时,Excel 会查找 XML 样式表 (XSL) 的标记。XSL 说明数据的显示方式。如果存在相应的标记,Excel 将会提示您选择是否应用样式表。如果选择应用 XSL,则 XSL 将指示数据的'显示方式;在这种情况下,本文中这一部分的其余信息将不再适用。
如果没有 XSL 标记,您将收到以下消息:
指定的 XML 源没有引用架构。Excel 将基于 XML 源数据创建架构。
然后,Excel 将导入 XML 源中的数据。如果 XML 数据在一个元素内包含重复的字段,Excel 会将数据分布到多个行上。每一行都包含一个唯一的数据集。这可能会导致 XML 中的小数据集在 Excel 中显示为很多行。
作为只读工作簿打开文件
如果选择作为只读工作簿打开 XML 源文档,则元素的第一个标记将被用作标题并被放入单元格 A1 中。其余的标记依照字母顺序排序,并放入第二行。当作为只读工作簿打开上文中的天气报告示例时,其中的数据将被排列到下面的列标题列表中: /area/city
/area/country
/area/region
/area/state
/date
/measurements/h-index
/measurements/humidity
/measurements/skies
/measurements/temperature
/measurements/uv-index
/measurements isibility
/measurements/wind/direction
/measurements/wind/windspeed
/time
如果有一个数据集,则每列的数据都放在电子表格的第三行上。如果 XML 数据在一个元素内包含重复的字段,Excel 会将数据分布到多个行上。每一行都包含一个唯一的数据集。这可能会导致 XML 中的小数据集在 Excel 中显示为很多行。
使用“XML 源”任务窗格
XML 数据文件的架构显示在“XML 源”任务窗格中。然后,可以将架构元素拖到工作表中,以将这些元素映射到工作表。
如果打开的是未引用架构的 XML 数据文件,则 Excel 将推断 XML 数据文件的架构。 ;
七 XSL 的控制语句
条件语句if then
XSL同样还有条件语句(呵呵~~好厉害吧 象程序语言一样) 具体的语法是增加一个xsl:if元素 类似这样
<xsl:if match= [ARTIST= Bob Dylan ] >
some output
</xsl:if>
上面的例子改写成为
<xml version= >
<xsl:stylesheet xmlns:xsl= xsl >
<xsl:template match= / >
<>
<body>
<table border= bgcolor= yellow >
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for each select= CATALOG/CD >
<xsl:if match= [ARTIST= Bob Dylan ] >
<tr>
<td><xsl:value of select= TITLE /></td>
<td><xsl:value of select= ARTIST /></td>
</tr>
</xsl:if>
</xsl:for each>
</table>
</body>
</>
</xsl:template>
</xsl:stylesheet>
XSL 的Choose
choose的用途是出现多个条件 给出不同显示结果 具体的语法是增加一组xsl:choose xsl:when xsl:otherwise元素
<xsl:choose>
<xsl:when match= [ARTIST= Bob Dylan ] >
some code
</xsl:when>
<xsl:otherwise>
some code
</xsl:otherwise>
</xsl:choose>
上面的例子改写成为
<xml version= >
<xsl:stylesheet xmlns:xsl= xsl >
<xsl:template match= / >
<>
<body>
<table border= bgcolor= yellow >
<tr>
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for each select= CATALOG/CD >
<tr>
<td><xsl:value of select= TITLE /></td>
<xsl:choose>
<xsl:when match= [ARTIST= Bob Dylan ] >
<td bgcolor= #ff ><xsl:value of select= ARTIST /></td>
</xsl:when>
<xsl:otherwise>
<td><xsl:value of select= ARTIST /></td>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for each>
</table>
</body>
</>
</xsl:template>
</xsl:stylesheet>
lishixinzhi/Article/program/net/201311/12197
因为XML将内容和表现分离, Web建造者需要新的方法来控制设计, 显示和输出 style sheet 是问题的答案 目前, 有三种可用于XML的 样式表:
Cascading style Sheets (CSS)
Extensible style Language (XSL)
Document style Semantics and Specification Language (DSSSL)
如果50版的浏览器支持XML, XML对现有的CSS标准的支持将会处理大部分基本的风格和页面问题 但是CSS对于专业出版商可能不够强大 所以, 另一端存在着DSSSL, 一个在使用SGML的高端出版商中流行的ISO (国际标准组织)标准 然而, DSSSL是复杂的, 它处理的打印文档管理在Web上很少有用
现在剩下了XSL,特别为XML而写的样式表XSL目前上交给了W3C作为一个建议标准,其中的XSL转换部分(XSLT)已经于1999年11月成为正式的规范 它给了Web开发者和用户较HTML更多的表现灵活性 例如, HTML的<H2>标识符在所有浏览器上的表现是基本一样的, 但是XSL让开发者指定他们的页面元素如何表现(尽管用户可以在个人设置中重载它)
XSL较CSS更强大, 因为它使Web建造者创建可以动态改变其表现的文档 例如, 你可以包含这样的程序语句, "如果一个XML元素的属性为数值10, 显示为绿色, 否则为黑色" 或者你可以将"仅供内部使用"作为属性给一个段落标上, 这样它在某些情况下不会出现 XSL被设计用于脚本语言如javascript
分类: 电脑/网络
问题描述:
请大虾详细告诉我
解析:
XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(w3/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:
XSLT是一种用来转换XML文档结构的语言。
--------------------------------------------------------
CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是:
(1) CSS不能重新排序文档中的元素;
(2) CSS不能判断和控制哪个元素被显示,哪个不被显示;
(3) CSS不能统计计算元素中的数据;
换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。
因此,我们常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。
以上就是关于XPath语法全部的内容,包括:XPath语法、用EXCEL表格和软件打开xml文件的方法具体步骤介绍、XSL的控制语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)