文档章节

XForms xpath使用手册

g
 ghpaas
发布于 2014/06/14 10:06
字数 2076
阅读 18
收藏 0

本文所描述的所有函数为XForms 1.1所提供的xpath函数,这些函数只能在GForms的xpath编辑器中可用,这样才能在运行时识别并执行。

不可在XMLUtil、标准XML DOM中使用这些函数。

GForms平台提供xpath编辑器,该编辑器可以协助开发者完成大多数xpath表达式开发:



1、节点函数

1.1、instance函数

node-set instance(string?)

An XForms Model can contain more than one instance. This functionallows access to instance data, within the same XForms Model, but outside theinstance data containing the context node.

If the argument is omitted or is equal to the empty string, thenthe root element node (also called the document element node) is returned forthe default instance in the model that contains the current context node.

Otherwise, the argument is converted to a string as if by a callto the string function. This string is treated as an IDREF, which is matchedagainst instance elements in the containing document. If a match is located, andthe matching instance data is associated with the same XForms Model as thecurrent context node, this function returns a node-set containing just the rootelement node (also called the document element node) of the referenced instancedata. In all other cases, an empty node-set is returned.

Example:

For instance data corresponding to this XML:

<xforms:instancexmlns="" id="orderform">

  <orderForm>

    <shipTo>

      <firstName>John</firstName>

    </shipTo>

  </orderForm>

</xforms:instance>

The following expression selects the firstName node. Note that the instance function returns an elementnode, effectively replacing the leftmost location step from the path:

ref="instance('orderform')/shipTo/firstName"


2、字符串函数

2.1、if函数

string if(booleanstringstring)

Function if evaluates the first parameter as boolean, returning the secondparameter when true, otherwise the third parameter.

2.2、property函数

string property(string)

This function accepts a string identifying a property name. If theproperty name is not recognized, empty string is returned. The propertydefinitions for this function are as follows:

Property

Return Value

version

1.1

conformance-level

full, basic or a string beginning with full or basic

Any other NCName

Reserved. Their use results in an exception (see 7.5 The XForms Function Library for the exception type)

QNameButNotNCName

An implementation-specific property value, such as a locale or timezone for the user agent. If the implementation does not support the property, then empty string is returned.

Examples:

property('version')

returns 1.1

property('conformance-level')

may return full

 

3、数值函数

3.1、avg

number avg(node-set)

Function avg returns the arithmetic average of the result of converting thestring-values of each node in the argument node-set to a number. The sum iscomputed with sum(), and divided with div by the value computed with count(). If the parameter is an empty node-set, or if any of the nodesevaluate to NaN, the return value is NaN.

3.2、number

number min(node-set)

 Function min returns the minimum value of the result of converting thestring-values of each node in argument node-set to a number."Minimum" is determined with the < operator. If the parameter is an empty node-set, or if any of thenodes evaluate to NaN, the return value is NaN.

3.3、max

number max(node-set)

Function max returns the maximum value of the result of converting thestring-values of each node in argument node-set to a number."Maximum" is determined with the < operator. If the parameter is an empty node-set, or if any of thenodes evaluate to NaN, the return value is NaN.

3.4. count-non-empty

number count-non-empty(node-set)

Function count-non-empty returns the number ofnon-empty nodes in argument node-set. A node isconsidered non-empty if it is convertible into a string with a greater-thanzero length.

 3.5. index

number index(string)

Function index takes a string argument that is the IDREF of a repeat and returns the current 1-based position of the repeat index forthe identifiedrepeat—see 9.3.1 The repeat Element for details on repeat and its associated repeat index. If the specified argument doesnot identify a repeat, the function returns NaN.

Note:

The IDREF obtained from the function parameter may not uniquelyidentify the desired repeat if the repeat element bearing the matching ID resides in a repeating constructsuch as element repeat. The general method described in 4.7 Resolving ID References in XForms is used to determine the desired run-time repeat object.

index

<xforms:trigger>

  <xforms:label>Add to ShoppingCart</xforms:label>

  <xforms:insertev:event="DOMActivate" position="after"

                 nodeset="items/item"at="index('cartUI')"/>

</xforms:trigger>

3.6. power

number power(numbernumber)

Raises the first argument to the power of the second argument,returning the result. If the calculation does not result in a real number, then NaNis returned.

Examples:

power(2, 3)

returns 8

power(-1, 0.5)

returns NaN.

if (prin>0 anddur>0 and rate>0, prin*rate/(1-power(1+rate, -dur)), 0)

returns a compounded interest payment value given a non-zeroprincipal (prin), duration (dur) and periodic interest rate(rate).

3.7. random

number random(boolean?)

This function generates and returns a uniformly distributed randomor pseudorandom number in the range from 0.0 up to but excluding 1.0. Thisfunction accepts an author-optional boolean parameter that is false by default. If true, the random number generatorfor this function is first seeded with a source of randomness before generatingthe return value. A typical implementation may seed the random number generatorwith the current system time in milliseconds when random(true) is invoked, and it may apply a linear congruential formula togenerate return values on successive invocations of the function.

Example:

random()

could return 0.14159265358979

3.8. compare

number compare(stringstring)

This function returns -1, 0, or 1, depending on whether the valueof the first argument is respectively less than, equal to, or greater than thevalue of second argument based on lexicographic comparison using Unicode codepoint values [Unicode Collation Algorithm].

Example:

compare('apple','orange')

returns -1

 4、布尔函数

boolean boolean-from-string(string)

Function boolean-from-string returns true if the required parameter string is "true" or "1", or false if parameter string is "false", or "0". This is useful whenreferencing a Schema xsd:boolean datatype in an XPath expression. If the parameter string matchesnone of the above strings, according to a case-insensitive comparison, thereturn value is false.

 

5、时间函数

时间的格式处理,为了简化本地化时间处理,gforms提供对时间的格式进行了可配置处理,按照xsd:date、xsd:dateTime,时间的字符串中会包含T、z等字符串信息,而在大多数编程场景下,一般不需要处理T、z信息,所以为了提供编程开发人员处理时间的效率,GForms对xsd:dateTime的合法格式进行可配置化。

系统默认时间格式:

格式类型

标准格式

GForms格式

xsd:date

yyyy-MM-ddz

yyyy-MM-dd

xsd:dateTime

yyyy-MM-ddThh:mm:ssz

yyyy-MM-dd hh:mm:ss

上述时间格式配置在GForms应用的<webContent>/ghorse/js/conf/config_xx.xsl文件中的date及dateTime。

 

5.1、now函数

string now()

得到当前UTC时间字符串,字符串格式与XSD的数据类型xsd:dateTime格式一致,而在GForms中所返回的时间字符串是按照config_xx.xslt中的dateTime格式进行格式化。

now()

按标准应该返回:2014-03-14T01:04:17Z,但在GForms中将根据config_xx.xslt中的dateTime配置进行返回:2014-03-14 01:04:17以方便本地化编程处理。

5.2、local-date函数

string local-date()

将返回与XSD数据类型xsd:date格式一致的字符串,该时间为本本地区时间,而非UTC时间,在GForms中将根据confgi_xx.xslt中的date配置格式进行格式化返回。

local-date()

返回格式 2006-10-13

5.3、local-dateTime

string  local-dateTime()

返回与xsd:daeTime格式一致的当前本地区时间,在gforms平台中,该时间将根据config_xx.xslt中的dateTime进行格式化返回。

local-dateTime()

按标准应该返回: 2006-10-13T16:04:17-07:00

但在GForms中如果是中国地区则会返回: 2006-10-13 16:04:17。

5.4、days-from-date

number days-from-date(string)

返回输入时间字符串所含有的天数,输入的时间字符串必须符合xsd:date或xsd:dateTime格式,但在GForms中要求输入字符串符合config_xx.xslt中的date、dateTime格式规范。

将把输入的时间转换为UTC格式,然后计算与 1970-01-01时间之间的天数。

如果输入的字符串参数不满足条件则返回NaN.

days-from-date("2002-01-01")

返回:11688

days-from-date("2002-01-01-07:00")

返回:11688,即小时、分钟及秒被忽略掉。

5.5、days-to-date

string  days-to-date( number)

把输入的天数转换为时间字符串,天数将从 1970-01-01之后开始计算,如果输入的天数非法,则返回空字符串。

days-to-date(11688)

返回 2002-01-01

days-to-date(-1)

返回 1969-12-31

 6、工具函数

6.1、加密函数digest

string digest(stringAlgorithm, encoding?)

对输入的字符串按照加密算法Algorithm加密并使用编码算法encoding进行编码,并把计算结果返回。

其中Algorithm目前支持MD5、SHA-1两种加密算法,encoding支持的有base64、hex,默认为base64。

digest('abc', 'SHA-1','hex')

将返回: a9993e364706816aba3e25717850c26c9cd0d89d.

 6.2、匹配函数match

boolean  match( noderegex)

根据正则表达式校验输入的模型实例节点node是否满足regex。

这里的regex需要进行转义处理,如:

/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/

需要编写为:

match( node, '^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$')

 

6.3、事件函数event

 object event(propertyName)

得到当前最新事件属性值,如:

event('response-reason-phrase')

 

如果后端发生内部错误,则得到的信息为一个字符串值:Internal Server Error

 

具体事件的可用属性信息是不一样的,可以参考相关控件。

  6.4、合法性校验is-valid

boolean is-valid(nodeSet)

校验所输入的节点是否合法,如果合法则返回true,否则返回false。

根据数据节点的绑定、schema等进行校验。

7.  xpath特殊字符

如果需要在xpath中输出这些特殊字符必须在xpath中使用转义字符。

特殊字符

特殊含义

实体编码

> 

开始标记

&gt;

< 

 结束标记

&lt;

"

引号

 &quot;

'

撇号

&apos;

&

"&"  

&amp;

8.  参考手册

1.       XForms提供的XPath函数详解请参考XForms标准:

http://www.w3.org/TR/2009/REC-xforms-20091020/#expr

 

2.       XPath2.0标准:

http://www.w3.org/TR/xpath20/

 

3.       xpath使用手册

http://www.w3school.com.cn/xpath/


© 著作权归作者所有

共有 人打赏支持
g
粉丝 0
博文 13
码字总数 25693
作品 0
海淀
XForms – 新的 Web 表单标准

XForms 肯定是下一代的基于 Web 的数据处理技术规范,XForms 可替换传统的 HTML 表单,使用 XML 数据模型和呈现元素。 在某些情况下,XForms 就等同于 HTML 表单,通过合适的编码服务器端接受...

红薯
2012/05/10
1K
8
JSON和XML:不可同日而语

很多人都在心里纠结,如果 JSON 和 XML 相比,谁更好谁更快?在接下来的新项目中到底选择哪一个?别傻了!完全没有可比性。就像自行车和 AMG S65 ,你能说哪个更好吗?虽然两者都是交通工具,...

丢失的羊羔
2016/01/21
23
0
JSON和XML:不可同日而语

【编者按】本文作者 Yegor Bugayenko 是 Teamed.io 公司的联合创始人,在软件质量和工程管理方法领域有深入的研究。本文中,作者通过对比 JSON ,向大家更详细地阐述了 XML 的四大特性,帮助...

OneAPM蓝海讯通
2016/01/21
16
0
betterFORM 4.1 发布,Web 表单助手

betterFORM 4.1 包含很多新特性,例如事件日志、错误高亮显示,同时提供了一个预览版的 XForms 编辑器以及一个 Windows 平台的独立安装包,当然也包括不少的 bug 修复。 betterFORM 可以用来...

红薯
2012/02/15
1K
0
XSLTForms

XForms to XHTML+Javascript (AJAX) conversion based on a unique XSL transformation. Suitable server-side (PHP) or client-side (Internet Explorer, Mozilla FireFox, Opera, Safari) ......

匿名
2009/07/07
493
0

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
10
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
20
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部