您的位置: 首页 N搜咨询 文章阅读 如何匹配特定的节点
打印本页 放大字体 关闭本页
如何匹配特定的节点

作者:N搜网友 编辑:N搜网 录入:N搜网 来源:N搜网络
录入时间:2006-8-15 更新时间:2006-8-15 点击次数:580
主标题:如何匹配特定的节点
副标题:如何匹配特定的节点
短标题:如何匹配特定的节点
 
    当使用<xsl:template>元素时,通常要使用match属性,来指明该模板规则是同哪个元素相匹配的,要应用于哪个元素。match属性支持一套复杂的语法,来精确的定位哪些元素是匹配的,哪些是不匹配的。另外,用于xsl:apply-templates,xsl:value-of,xsl:for-each,xsl:copy-of以及xsl:sort等元素中的select属性,也是用来定位匹配元素的,它支持比match属性更复杂、强大的语法功能集来精确定位元素。下面就分几个部分,来详细的讲述一下如何实现匹配特定的节点。
    根节点的匹配:
    当用xsl样式表对xml文档进行转换时,转换的结果是一个well-formed的xml文档,因此,xsl转换所做的第一项工作就是生成结果文档的根元素。通常,xsl样式表都是从匹配根节点的规则开始,来生成结果文档的根元素。为了表示一条规则是同根节点相匹配的,可以给match属性赋值"/"。例如:
    <xsl:template match="/"> <result_tree_root> <xsl:apply-templates /> </result_tree_root></xsl:template>
    这条规则仅仅匹配xml文档的根节点。当xml文档的根节点被xsl处理器读入时,就输出标记<result_tree_root>,然后去处理根节点的子元素,最后输出</result_tree_root>节点。
    一般的xsl处理器都有一个缺省的同根节点相匹配的规则,因此在平时所见到的xsl实例中可能没有根规则。而上面这个小例子,则覆盖了根节点的缺省规则,使用了自定义的根规则。
    下面用一个只有一个根规则的,完整的样式表的例子,来加深一下对上述描述的认识。
    对于一个xml文档,如果施以下面的样式表:
    <?xml version="1.0" encoding="gb2312" ?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/"> <html> <head> <title>An XSL style sheet with one rule for the root node</title> </head> <body> Hello everyone! This is a rule for the root node of the input document. </body> </html></xsl:template>
    因为在这个样式表中,只提供了应用于根节点的规则,而且在这条规则中没有指明如何进一步的去处理根节点的子节点。所以,在转换后的输出结果中,只有这条规则中的内容。换句话说,这个样式表无论施加在哪个xml文档上,都会得到下面的输出结果:
    <html> <head> <title> An XSL style sheet with one rule for the root node</title> </head> <body> Hello everyone! This is a rule for the root node of the input document. </body></html>
    你可以自己写一个well-formed的xml文档,然后应用上面的样式表,看看会得到什么转换效果。 然后再把这个样式表施加到其它的xml文档中试试呢?
    元素匹配:
    在xsl样式表中,最基本的模式匹配就是元素匹配。在元素匹配中,match属性的值是一个元素名,所有叫那个名字的元素都将被匹配。例如,下面的模板匹配所有的book元素,并且用黑体来显示它的子元素author:
    <xsl:template match="book"> <b><xsl:value-of select="author"/></b></xsl:template>
    为了能更详细的解释说明如何实现"元素匹配",我们来看一个具体的例子。在这个例子中,我们用样式表book.xsl来对xml文档book.xml进行转换。
    对于下面的book.xml文档:
    <?xml version="1.0" encoding="gb2312" ?><?xml:stylesheet type="text/xsl" href="book.xsl" ?><books> <book> <title>ASP2.0揭密</title> <author>Stephen Walther</author> </book>
    <book> <title>LINUX大全</title> <author>Jack Tachett Jr. And David Gunter</author> </book></books>
    给定的样式表book.xsl如下:
    <?xml version="1.0" encoding="gb2312"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/"> <html> <head> <title>书目列表</title> </head> <body> <xsl:apply-templates select="books"/> </body> </html></xsl:template>
    <xsl:template match="books"> <h1 align="center">书目列表</h1> <table border="1" align="center"> <th>书名</th> <th>作者</th> <xsl:apply-templates select="book" /> </table></xsl:template>
    <xsl:template match="book"> <tr> <td aligh="center"><xsl:value-of select="title" /></td> <td aligh="center"><xsl:value-of select="author" /></td> </tr></xsl:template>
    </xsl:stylesheet>
    在这个样式表中,首先通过match="/"来匹配根节点。在根节点的模板规则中,包含了一个xsl:apply-templates元素,xsl:apply-templates利用select属性来保证根节点的子节点books元素将被进一步处理。
    然后,通过match="books"创建了一个应用于books元素的规则。这条规则首先生成了一个表格的头部信息,然后又通过xsl:apply-templates指出,需要对book元素再做进一步的处理来生成表格的内容。
    最后,通过match="books"创建了book规则。在book规则中,通过<xsl:value-of select="title" />和<xsl:value-of select="author" />来获取book元素中的子元素title和author的实际内容,并把这些内容封装在html的<tr>、<td>元素中,因此,最终得到的结果就是一个显示书目信息的表格,如下图所示:
    用 / 来匹配子节点:
    如第一部分所讲,单独使用"/"符号表示匹配根节点。然而,如果在两个元素名之间使用"/"符号,则表示第二个元素是第一个元素的子元素。例如,仍然利用上一节中的xml文档实例book.xml,book/title所指的就是book元素中的title子元素。
    利用"/",可以更精确的匹配某种类型的元素。举个例子来说,对于下面的一段xml文档:
    <entertainment> <book> <title>书名</title> </book> <film> <title>电影名</title> </film></entertainment>
    如果只利用元素名title来匹配元素,则无论是book元素中title的还是film元素中的title都将得到匹配。如果只想对book元素中的title进行样式设定那该怎么办呢?利用"/"符号,就可以达到这个目的,如下所示:
    <xsl:template match="book/title"> <b><xsl:value-of select="."/></b></xsl:template>
    注意:上面这条规则匹配的是book元素的子元素title,而不是有子元素title的book元素。换句话说,在<xsl:value-of select="."/>中的"."指的是title元素,而不是book元素。
    利用"/",还可以达到更深层次的匹配。例如,entertainment/book/title,表示匹配title元素,这个title的父元素是book,book的父元素是entertainment。
    最后还要说明一点:在由"/"形成的匹配的层次结构中,还可以利用通配符"*"来表示任意的元素。例如,下面的规则表示要应用于所有的祖父元素是entertainment的title元素。
    <xsl:template match=" entertainment/*/title"> <b><xsl:value-of select="."/></b></xsl:template> [N搜网-中国网上商店商品服务搜索门户]:[本文章由N搜网于2006-8-15录入系统,网址:www.nsall.com

打印本页 放大字体 关闭本页
 
 
相关主题文章
电子商务站点设计技巧 网站改版十个理由九个错!
网站结构与美女身材的相似性? 网站设计成功要素
营销商如何制定网站改版解决方案 中搜网络猪近期将推出新版
企业网站不能成为摆设 如何匹配特定的节点
如何设计一个成功的网站 软件界面设计要素
完整VI项目设计书 网络世界“惊天大创意”
利用网站拓展出口三策略 设计网站要绞尽脑汁
走出误区!对网站建设的反思 商业网站竞争优势研究
电子商务站点设计技巧 网站设计:从形式到内容,再到服务
网站建设之互动栏目的重要性 闲谈中国网站的名字
网站页面信息和表现原则 网站的各个栏目策划
版面设计的介绍 网页版面的布局
用户可以在浏览器中将已经制作好的 Scaal 主页打… 网页版面设计
网站LOGO设计规范的思考 营销商如何制定新一年的网站改版计划
网站CI形象设计 网站规划的流程
网页设计注意事项 一份好的商业计划书提纲
网站的各个栏目策划 企业如何准备建网资料?
商业网站的制作规范 商业网站规划设计
网页设计的注意事项 会计类个人网站的现状和思考
中国个人网站的现状 WEB站点设计中基于价值的方法
制作网站使用的相关软件 使用DIV之后,什么时候使用TABLE?
WEB站点设计中基于价值的方法 成功网站背后的故事
对个人主页制作者的一些建议 会计类个人网站的现状和思考
建个人网站有哪些方式 ? Web网站的设计、管理与维护
Efly.Wang对中国网站设计的感想 高手进阶:网页设计中的文字运用
个人网站制作及博客建站技巧 搜索引擎营销的目标层次及网站优化设计
建立网站有哪些作用? 使用DIV之后,什么时候使用TABLE?
制定主页的风格 制作网页需要的硬件配置
提高网站广告效果的九个要诀 面向搜索引擎的网站设计
优化加速你的网站-2 优化加速你的网站-1
网站登录Google与网站设计 建设网站必读
主页制作的个人观点 在网页编辑常用表现的实现方法
建站技巧之在搜索引擎作弊的一些方法 关于网站制作规范的探讨
XHTML+CSS=网站重构 网站页面浏览数量统计指标真实意义的讨论
网页应该怎样设计才能被百度有效收录 网站设计与开发流程管理
个人网站的制作与分类 建站指南:善用色彩设计网页
从网站优化设计的观点看,网站结构怎样才是合理的… 从报纸排版中看WEB标准的应用
从网站优化设计的观点看,网站结构怎样才是合理的… 网络营销常用的十种方法
个人网站的制作与分类 个人网站发展壮大过程中几个无法回避的问题
浅谈网站访问量的监测 个人网站如何定位和发展
[网站类项目商业计划书]格式 网站建设方案
《站长兵法》连载之序 国际网页Web设计流程
韩国网站的设计好在那里 建立企业网站的内容和建站方法
建站指南:善用色彩设计网页 企业网站版面设计的介绍
企事业单位上网的20个理由 企业网站设计有哪些不足?
企业需要一个什么样的网站 网站建设的必要性
浅谈个人网站的定位问题 WEB设计经验
创建优秀网页的6个好习惯 避免被Google说“不”
个人主页出路--合作的道路 免费网站制作一席谈
如何开发一个专业的企业WEB网站 如何寻找企业网站建设业务的卖点
 
 
 
本站关键字:网上商店商品服务大全 网上购物导航 在线购物搜索引擎 网店比较购物 网络商城 特色网上超市商店 网上网络开店购物