跟我学XSL(9)XSL函数二

本期介绍多个XSL对于VBScript、JScript增加的方法、属性,以充分发挥XML的优势,用于<xsl:script>、<xsl:eval>标记内表达式的编写或<xsl:if>、<xsl:when>的expr属性。

一、absoluteChildNumber

含义:返回结点相对于它所有的兄弟(不论名字是否相同)的序号。

语法:absoluteChildNumber(node)

参数:node ── 对象,欲返回编号的结点。

示例:

1、假定文档结构为:<document><head/><body/></document>,其中document为顶层结点,下述表达式将输出:

<xsl:eval>
absoluteChildNumber(this.selectNodes('/document/body').item(0))
</xsl:eval>

2、确定当前结点相对于其所有兄弟的序号:

<xsl:eval>
absoluteChildNumber(this)
</xsl:eval>

二、ancestorChildNumber

含义:从给定结点出发根据给定祖先结点名返回最近的祖先结点的序号(相对于同名结点)。如果找不祖先,则返回0。

语法:ancestorChildNumber(bstrNodeName, pNode)

参数:

bstrNodeName ── 字符串。被搜索的祖先结点的名字。

pNode ── 对象。搜索开始位置的结点。

示例查找当前结点最近的名为report祖先结点:

ancestorChildNumber('report',this)

三、attributes

含义:返回结点属性的集合。

语法:object.attributes

参数:object ── 结点对象。

示例:当前结点属性的个数

this.attributes.length

当前结点第三个属性的值

this.attributs.item(2).value


this.attributes.item(2).text


this.attributes(2).text

注意:如果给定的下标大于属性总和减1将出错,第一个属性的下标是0。

四、baseName

含义:返回有名字空间限制的基本名,即不包括名字前缀。

语法:object.baseName

参数:object ── 结点对象

示例,当前结点的基本名:
this.baseName

五、childNumber

含义:返回结点相对于同名同胞的序号。

语法:childNumber(object)

参数:object ── 结点对象

示例,假定XML文档结构如下:

<x><y><z></z></y></x>

如果当前结点是z,则childNumber(this)返回1,而absoluteChildNumber(this)返回3。

六、dataType

含义:设定或读取结点的数据类型。

语法:设定结点的数据类型 object.dataType=objValue
      读取结点的数据类型 objValue=object.dataType

参数:object ── 结点对象。
   示例,读取当前结点的数据类型:

dtType=this.dataType

七、depth

含义:指定结点出现在文档树上的深度,即该结点位于文档第几层,顶层结点位于第一层,根结点(即用"/"表示的结点)位于第0层。

语法:depth(pNode)

参数:pNode ── 结点对象

示例,当前结点的深度:

depth(this)

八、firstChild、lastChild

含义:返回结点的第一个子结点(或最后一个子结点)。

语法:pNode.firstChild
      pNode.lastChild

参数:pNode ── 结点对象

示例,当前结点的第一个结点的名字:

this.firstChild.nodeName

九、formatIndex

含义:用指定的计数系统格式化提供的整数。

语法:formatIndex(lIndex, bstrFormat)

参数:

lIndex ── 整型数值或变量

bstrFormat ── 数据格式,可选值有a、A、i、I、1、01(以0打头的数值形式,如果要求固定长度的编号如0001、0002则非常有用)。

示例,当前结点的大写罗马数字编号:

formatIndex(childNumber(this),'I')

十、formatNumber

含义:以指定格式输出数值。

语法:formatNumber(dblNumber, bstrFormat)

参数:说明同formatNumber,不同之处在于格式化的可以是小数。

示例,对变量a的值格式化为两位小数:
formatNumber(a,'#.00'):

十一、hasChildNodes

含义:如果结点有子结点则返回true(-1),否则为false(0)。

语法:pNode.hasChildNodes()

注意:与此前介绍的函数不同,此函数后必须带一个空括号。

示例,判断当前结点是否有子结点:

this.hasChildNodes

十二、namespaceURI、prefix

含义:返回结点名字空间的全局资源标识符(或前缀)。

语法:pNode.namespaceURI
      pNode.prifix

十三、nextSibling、previousSibling、parentNode

含义:返回结点的下一个兄弟(或前一个兄弟、或结点的父结点)。

语法:pNode.nextSibling
      pNode.previousSibling
      pNode.parentNode

注意:对根结点(即"/")应用parentNode方法、对第一个孩子结点应用previousSibling方法、对最后一个孩子结点应用nextSibling方法均会导致错误,可通过此过关系运算符==(等于)和!=(不等于)来判断一个结点是否某一指定结点,格式为pNode1 = pNode2或pNode2 != pNode2。

十四、nodeName

含义:返回元素、属性、入口的名字或其他类型结点的一个特定字符串。

语法:pNode.nodeName

示例,当前结点的名字:

this.nodeName

十五、nodeType、NodeTypeString

含义:返回结点的类型的数值形式(或字符串形式)。
   语法:pNode.nodeType 或 pNode.nodeTypeString

返回值:

 结点类型  结点类型值  结点的字符形式描述
 Element  1  'element'
 Element Attribute  2  'attribute'
 Markup-Delimited Region of Text  3  'text'
 Processing Instruction  7  'processing_instruction'
 Comment  8  'comment'
 Document Entity  9  'document'
时间: 2025-01-01 14:09:46

跟我学XSL(9)XSL函数二的相关文章

跟我学XSL(7)XSL函数一

本期学习XSL样式方法,即可用于XSL元素<xsl:for-each>.<xsl:value-of>.<xsl:template>的select属性.<xsl:apply-templates>的match属性.<xsl:if>.<xsl:when>的test属性中,对元素的范围进行筛选,从而提供更大的灵活性. XML与DHTML(动态HTML)一样,这些节点都是一个个对象,而且这些对象都是有层次的,从根节点开始构成一颗层次清淅的树状结

跟我学xml和XSL

xml 跟我学xml和XSL第一个XML文档 随着Internet的发展,越来越多的信息进入互联网,信息的交换.检索.保存及再利用等迫切的需求使HTML这种最常用的标记语言已越来越捉襟见肘.HTML将数据内容与表现融为一体,可修改性.数据可检索性差,而XML借鉴了HTML与数据库.程序语言的优点,将内容与表现分开,不仅使检索更为方便,更主要的是用户之间数据的交换更加方便,可重用性更强. XML是一种元标记语言,没有许多固定的标记,为WEB开发人员提供了更大的灵活性.当我们使用HTML时,标记只是

谈谈CMS内容管理系统的两种方案:XSL+XML和HTML (二)

xml 上篇讲到了XSL和XML如何在客户端浏览.也是CMS内容管理系统内容发布的一种形式,即XSL(模版)+XML(内容).     但是现实情况是由客户端浏览器不支持,这样做还会给服务器造成一定的负载,能够减轻服务器服务负载的最好方法就是完全实现静态页面的内容访问机制,当然这样就需要再次将XSL和XML生成HTML或者SHTML.     呵呵,这就是所说的CMS内容管理系统内容发布的第二种形式HTML或者SHTML.     在Java中有很多方式来实现,首先是先产生XSL文件,即模版文件

跟我学XSL(5)XSL中的choose

    上期我们学习了XSL元素<xsl:if>,已能通过测试XML数据的值来决定不同的输出形式,不知你尝试过没有,实际上<xsl:for-each>也可部分实现<xsl:if>的功能,但有时,我们希望对同一数据同时测试多个条件,根据不同条件输出相应结果.当然,我们可以用if,假如我们只有if可用的话.幸好我们有一个更好的选择,那就是用<xsl:choose>.下面介绍相关元素的语法: <xsl:choose> 语法:<xsl:choose

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件--测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib.当然本文还会介绍自定义插件的使用.   -------------------------------------------------------------

从头开始学JavaScript (五)——操作符(二)

原文:从头开始学JavaScript (五)--操作符(二) 一.乘性操作符 1.乘法:*      乘法操作符的一些特殊规则: 如果操作数都是数值,按照常规的乘法计算,如果乘积超过了ECMAscript数值的表示范围,则返回infinity或者-infinity 如果有一个操作数是NaN,那返回结果就是NaN 如果是infinity与0相乘,返回NaN 如果infinity与非0数相乘,返回infinity或者-infinity infinity与infinity相乘,返回infinity 如

PHP 和 XML: 使用expat函数(二)_php基础

 PHP 和 XML: 使用expat函数(二) 让我们看一下实际处理这个文档的PHP代码. /*NewsBoy : News system for the web written in PHP by Justin Grant (Web: jusgrant.cjb.net or justin.host.za.net Mail: justin@glendale.net)25 March V0.0.2 Converted Newsboy to a PHP class, allowing the la

跟我学XSL(6)XSL的运算符

表一.运算符与特殊字符  运算符 描述 / 选择子元素,返回左侧元素的直接子元素:如果"/"位于最左侧表示选择根结点的直接子元素 // 递归下降,不论深度,搜索指定的元素:如果位于最左侧表示从根结点出发递归下降搜索指定元素 . 表示当前元素 * 通配符,选择任意元素,不考虑名字 @ 取得属性值,作为属性名的前缀 @* 通配符,选择任意属性,不考虑名字 : 名字作用范围分隔符,将名字作用范围前缀与元素或属性名分隔开来 !* 在相关节点上应用指定方法 ()* 分组,明确指定优先顺序 []

跟我学XSL(3)XSL模板与匹配模式

    经过前几日的学习,我们学习了XHTML文档的编写和以及三个XSL元素,已能编写相当灵活的XSL文档,今天将学习的是XSL模板的编写.我们都知道,短的文档.程序十分好读,但当规模增大后,其复杂性也以更快的速度增加. 前面我们学了<xsl:for-each>.<xsl:value-of>等,可以用它们对XML数据实现简单的格式化输出,但如果遇到比较复杂的XML格式输出,将XSL按照要求依次写下来的话,一是设计困难,可扩展性差,不利于人员之间的分工协作:另则,可修改性很差,可能会