FeaturesPluginsDocs & SupportCommunityPartners

BPEL 映射器中的 XPath 函数和运算

BPEL 映射器是可视化处理 XPath 表达式的工具。BPEL 映射器允许处理表达式、复制变量、XSD 元素和 XSD 属性。此工具允许处理谓词并使用 XPath 函数。
XPath 表达式编辑器用于处理一些业务过程元素。对每个元素允许使用下列表达式:复制表达式、条件表达式或时间函数用法。

目录

本页面内容适用于 NetBeans 6.0 IDE

用户界面

BPEL 映射器具有一个易于使用的直观的用户界面。当选择可以包含 XPath 表达式的 BPEL 图元素时,将出现BPEL 映射器窗口。BPEL 映射器用于下列业务过程元素:Assign、If、If 的 ElseIf 元素、ForEach、RepeatUntil、While 和 Wait。每个元素都具有允许使用的表达式,包括复制表达式、条件表达式、时间函数用法。条件表达式是为 If、If 的 ElseIf 元素、While 和 RepeatUntil 元素定义的。复制表达式是为 Assign 元素定义的。持续时间表达式是为 Wait 元素定义的。带有参数的条件表达式是为 ForEach 元素定义的。使用BPEL 映射器界面,可以进行计算:将上述 XPath 运算和函数分配给本地和全局变量、XSD 元素和属性以及各个部分。

在 BPEL 设计器设计视图的上下文菜单中,上述业务过程元素都具有“显示BPEL 映射器”项。关闭BPEL 映射器窗口时,上下文菜单可用。还可以通过从主菜单中选择“窗口”>“BPEL 映射器”打开 XPath 表达式编辑器窗口。

可以编辑 BPEL 文件的源文本中的 XPath 表达式,如图 1 所示。BPEL 映射器显示正确的修改,如图 2 所示。

图 1:BPEL 文件的源代码视图

BPEL 文件的源代码视图
单击查看大图

图 2:Assign1 的添加操作

Assign1 的添加操作

回到顶部

BPEL 映射器中使用的函数和运算符

BPEL 映射器支持 1.0 版的 XML Path 语言(XPath 1.0)。XPath 语言是 XML 平台的关键部分。由 W3C 联盟开发的 XPath 语言是用于解决 XML 文档结构部分的一种语言。此语言具有用于操作字符串、数字和布尔值的函数。XPath 的主要语法构造是表达式。作为处理表达式的结果,属于下列四种基本类型之一的对象将显示:
  • 节点集合 - 没有重复项的无序的节点集合
  • 布尔 - 真或假
  • 数字 - 带浮点的数字
  • 字符串 - UCS 符号序列
XPath 语言支持数字表达式、等式和比较运算,以及布尔表达式。BPEL 映射器支持部分 XPath 操作和函数。

数字表达式和运算

BPEL 映射器的 Operator 菜单如下所示。

图 3:BPEL 映射器“运算符”菜单

BPEL 映射器“运算符”菜单

数字表达式

数字表达式用于对数字执行算术运算。等式性运算用于检查两个值的相等性。XPath 语言中的任何数字都具有带浮点的表示形式。数字可以接受 64 位格式的任何 IEEE 754 DP 值。这包括特殊的“非数字”(NaN) 值、正无穷和负无穷,以及正零和负零。

表 1:数字表达式中使用的运算符

运算符 描述 示例 结果
+ 两个数字相加 2 + 3 5
- 一个数字减去另一个数字
5 - 2 3
* 一个数字乘以另一个数字
2 * 5 10
div 一个数字除以另一个数字
10 div 2 5
mod 一个数字除以另一个数字得到的余数
11 mod 3 2
- 一元减 -2 -2

相等运算

注意,length = 5.50 是下表的初始数据。

表 2:相等运算中使用的运算符

运算符 描述 示例 结果
= 相等运算 length=5.50 true
!= 不相等运算 length!=5.50 false

比较运算

注意,length = 5.50 是下表的初始数据。

表 3:比较运算中使用的运算符

运算符 描述 示例 结果
< 小于 length<5.50 false
<= 小于或等于 length<=5.50 true
> 大于 length>5.50 false
>= 大于或等于 length>=5.50 true

注意:如果进行比较的对象都不是 node-set,并且运算符是 <=<=>>,则所比较的对象首先转换为数字,然后才进行比较。


回到顶部

布尔表达式和函数

BPEL 映射器的“布尔”菜单如下所示。

图 4:BPEL 映射器“布尔”菜单

BPEL 映射器“布尔”菜单

布尔表达式

answer = true

表 4:布尔表达式中使用的运算符

运算符 描述 示例 结果
or 如果至少一个布尔操作数等于 true,则返回 true false() or answer true
and 如果两个布尔操作数都等于 true,则返回 true true() and answer true

布尔函数

注意,answer = true 和 xml:lang="en" 上下文节点语言是下表的初始数据。


表 5:布尔函数用法

名称 描述 示例 结果
boolean 将参数转换为布尔类型 boolean(2) true
false 返回 false false() or answer true
true 返回 false true() or answer true
not 返回否定 not(false()) true
lang
返回 truefalse,这取决于 xml:lang 属性中定义的上下文节点语言是否与属性字符串中定义的语言相同(或子语言相同) lang('en') true

回到顶部

数字函数

BPEL 映射器的“数字”菜单如下所示。

图 5:BPEL 映射器“数字”菜单

BPEL 映射器“数字”菜单

表 6:数字函数用法

名称 描述 示例 结果
round 取整为最接近的整数 round (3.14) 3
ceiling 函数返回大于或等于参数的最小整数 ceiling (3.14) 4
floor 函数返回小于或等于参数的最大整数 floor (3.14) 3
number 将参数转换为数字 number(length) length 元素的数字值
sum 函数将节点集合中的每个节点转换为数字并对其求和 sum(/apple/count) 所有 count 节点之和
Number Literal 数字(在 XPath 中,数字具有带浮点的表示形式) 1.2 1.2

回到顶部

字符串函数

BPEL 映射器的“字符串”菜单如下所示。

图 6:BPEL 映射器“字符串”菜单

BPEL 映射器“字符串”菜单

表 7:字符串函数用法

名称 描述 示例 结果
string 将参数转换为字符串 string(3.14) '3.14'
string-length 返回字符串长度 string-lenght('MyString') 8
substring 返回第一个参数字符串的一部分,以第二个参数设置的位置开始,并具有第三个参数中设置的长度。 substring('1234',2,3) '234'
substring-after 返回第一个参数字符串的一部分,即在第二个参数字符串第一次出现之后的部分。 substring-after('20-30','-') '30'
substring-before 返回第一个参数字符串的一部分,即在第二个参数字符串第一次出现之前的部分。 substring-before('14-30','-') '14'
contains 如果第一个字符串包含第二个字符串,则返回 true

contains('XPath','X')

true
starts-with 如果第一个字符串以第二个字符串开始,则返回 true starts-with('XPath','X') true
concat 返回两个字符串的连接 concat('String1 ','String2') 'String1 String2'
normalize-space 返回空格符号正常化的参数字符串 normalize-space('  1     2    ') '1 2'
translate 返回第一个参数字符串,其中第二个参数字符串中设置的符号替换为第三个参数字符串中相应位置的符号 translate('black','kcalb','etihw') 'white'
String Literal 字符串常量;字符串由在 XML 引用中定义的一系列空符号和其他符号组成 'String' 'String'

回到顶部

节点集合函数

BPEL 映射器的“节点”菜单如下所示。

图 7:BPEL 映射器“节点”菜单

BPEL 映射器“节点”菜单

下列代码是 SOAP 消息的示例。

代码示例 1:SOAP 消息示例
<soapenv:Envelope
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:syn="http://xml.netbeans.org/schema/SynchronousSample">

  <soapenv:Body>
    <syn:typeA>
      <syn:paramA>String1</syn:paramA>
      <syn:paramA>String2</syn:paramA>
      <syn:paramA>String3</syn:paramA>
      </syn:typeA>
  </soapenv:Body>
</soapenv:Envelope>


表 8:节点集合函数用法

名称 描述 示例 结果
count 返回参数中节点集合的个数 count($inputVar.inputType/xs:paramA) 3
last 返回最后一个元素在集合中的编号 $inputVar.inputType/paramA[last()] String3
position 返回元素在集合中的位置
local-name
返回第一个标记在无名称空间的集合中的名称 local-name($inputVar.inputType/xs:paramA) paramA
name 返回第一个标记在集合中的完整名称  name($inputVar.inputType/xs:paramA) syn:paramA
namespace-uri 返回对定义名称空间的 url 的引用 namespace-uri($inputVar.inputType/xs:paramA) http://xml.netbeans.org/schema/SynchronousSample

回到顶部

用于操作日期和时间的函数

BPEL 映射器允许您在图形界面的帮助下设置常量并使用时间函数。

BPEL 映射器的 Datetime 菜单如下所示。

图 8:BPEL 映射器 Datetime 菜单

BPEL 映射器 Datetime 菜单

表 9:用于操作日期和时间的函数用法

名称 描述
current-time 返回当前时间
current-date 返回当前日期
current-dateTime 返回当前日期和时间
Duration Literal 字符串;允许以 'P1Y2M3DT4H5M6S' 格式设置时间间隔。

回到顶部

结束语

图形表示形式提供了对 XPath 表达式的方便分析和查看。BPEL 映射器是一种允许在可视模式下创建和编辑 XPath 表达式的工具。BPEL 映射器图形界面允许设置常量、使用时间函数并处理谓词。BPEL 映射器界面允许使用本文列出的 XPath 操作和函数对本地和全局变量、XSD 元素和属性、以及各部分执行计算。


回到顶部

更多信息



回到顶部


此页面最近修改日期:2007 年 11 月 23 日

回到顶部

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by