基本 XPath 表达式

当您需要标识消息或变量中的一个或多个节点,以便访问数据或确定是否满足某个条件时,会在编排和平面文件模式定义中用到 XPath 表达式。

XPath 是一种 XML 标准,定义用于标识 XML 文档中的节点或一组节点(称为“节点集合”)的语法。

您可以编辑在以下窗格中生成的缺省 XPath 表达式:

  • 针对每个“拆分”活动活动的配置窗格中,会生成用于定义重现元素的 XPath 表达式。您可以编辑显示在元素名称字段中的缺省 XPath 表达式。
  • while 循环If..Then 活动的配置窗格中,会在“表达式构建器”中生成定义条件的 XPath 表达式。您可以通过单击高级编辑显示的缺省 XPath 表达式。

支持 XPath 2.0。

按路径选择节点

XPath 将 XML 元素和属性的位置描述为与 URL 或本地文件系统目录类似的路径。每个元素或属性均是以根节点开始的某个树中的节点。根节点包含整个树,因此该树中的所有节点都可以通过沿着某条路径向下查找分支来找到。

基本语法是:

/根节点/子节点/.../最终元素节点

/根节点/子节点/.../最终元素节点/@属性节点

可通过描述消息的 XML 模式确定该路径。

XPath 使用 @ 符号作为标识属性的速记符。 缺省情况下,不带 @ 或属性:: 前缀的路径标识元素。例如:

 /PackingSlip/PONumber/Item

标识在 PackingSlip 根节点的 PONumber 中找到的 Item 元素。

节点名和 XML 名称空间

节点名还可以与名称空间一起显示,例如 tns:OrderNumber 或 *:Item。冒号前的名称部分是标识名称空间的前缀,冒号是名称空间和节点本地名称之间的定界符。

当文档共享来自多个模式的内容时,名称空间是用于唯一标识元素或属性的 XML 标准。Cast Iron® Studio 会自动为配置文档中使用的 XML 模式分配和管理名称空间。

注: 可以为某个 WSDL 定义内的所有模式定义名称空间。

使用谓词有条件地选择节点

您可能有时需要在满足某些条件时才选择节点。这些选择条件称为谓词。

可在方括号内定义谓词,例如:

/PV1/PatientDepartment[text()='Nursery']

该条件仅当 PatientDepartment 节点中的数据是 Nursery 时,才选择该节点。

/Order/OrderDetail/Item[5]

该表达式选择 OrderDetail 内的第 5 个 Item 节点。

条件的有效运算符

XPath 表达式还可以是求值为 true 或 false 的布尔条件。这些表达式可用于选择特定节点,或仅标识必须满足的某个条件。您可以使用表达式构建器帮助定义条件。可以出现在表达式中的 XPath 运算符包括:

  • = 等于
  • != 不等于
  • < 小于
  • > 大于
  • <= 小于等于
  • >= 大于等于

XPath 表达式中的函数

XPath 还包含函数,可用于处理来自节点的数据。在构建包含来自消息的某些常量文本和动态数据的主题行时,这非常有用。XPath 函数还可用于处理修剪空格或确保作业键是字符串数据类型等诸如此类的要求。一些常规的 XPath 函数包括:
concat()
可用于将来自节点的任何数量的字符串和数据按您指定参数的顺序进行组合。您可以将 XPath 路径指定为参数。 请在引号内指定常量文本字符串。例如:

concat('New Order # ',/Orders/Order/OrdNumber)

count()
可用于计算指定参数中的节点的数量。通常,该参数是一个 XPath 路径表达式,用来标识多个节点,例如,作为 PODetail 子代的所有 Item 节点。 例如:

count(/Orders/Order)

normalize-space()
修剪掉输入参数中的所有前置和结尾空格字符,并将输入中的所有空格统一化为一个空格字符和一个换行符。例如:

normalize-space(/Job/Address/Line1)

number()
将参数转换为数字数据类型。该函数可用于确保将字符串处理为数字。例如:

number(/PurchaseOrder/POTotal)

string()
将参数转换为字符串数据类型。该函数可用于确保将数字或日期节点处理为字符串。例如:

string(/PurchaseOrder/VendorID)

translate()
将个别字符替换为您在第一个参数中指定的其他字符。第二个参数是要替换的的一个或多个字符,第三个参数是替换字符。该函数可用于确保作业键为全部大写,例如:

translate(/Issue/ShortDescr,

'abcdefghijklmnopqrstuvwxyz',

'ABCDEFGHIJKLMNOPQRSTUVWXYZ')

有关 XPath 函数的完整列表,请参阅 XPath 规范(http://www.w3.org/TR/xpath)。

测试 XPath 表达式

可以通过使用 XPath 评估程序,根据 XML 测试数据测试您的 XPath 表达式