Altova XMLSpy 2023 Enterprise Edition

XPath 1.0表达式

 

XPath 1.0函数在输入时必须不带任何命名空间前缀。

支持四种节点测试,按类型分为:node()text()comment()processing-instruction()

 

XPath 2.0和3.1表达式

 

支持字符串(例如,“Hello”)和数字(例如,256)。要创建基于XML Schema类型的其他常值,您可以使用一个构造函数,以命名空间为前缀(例如,xs:date('2004-09-02'))。用于XML Schema类型的命名空间前缀必须与XML Schema命名空间绑定:http://www.w3.org/2001/XMLSchema,该命名空间必须在您的XML文件中声明。

Xpath计算器所使用的XPath 2.0 and 3.1函数属于命名空间http://www.w3.org/2005/xpath-functions。通常,fn:前缀是绑定到该命名空间的。然而,由于该命名空间是Xpath计算器使用的默认函数命名空间,因此您不必在这些函数上指定前缀。如果使用前缀,请确保该前缀绑定到必须在XML文档中声明的XPath函数命名空间。例如:current-date()(函数命名空间未在XML文档中声明);fn:current-date()(函数命名空间未在XML文档中声明,或已在XML文档中声明并绑定到前缀fn:)。即使在XML文档中已经声明了函数的命名空间(无论是否有前缀),您也可以省略命名空间的前缀;这是因为在XPath表达式中使用的函数位于默认的命名空间中,也就是函数的默认命名空间。

Altova的XPath扩展位于命名空间https://www.altova.com/xslt-extensions中。

 

请注意:在命名空间这一点上,当您使用XML Schema命名空间中的构造函数或类型时,您必须在XML文档中声明XML Schema命名空间,然后在XPath表达式中使用正确的命名空间前缀。您不必为XPath函数使用前缀。

 

XPath 2.0和3.1中的数据类型

在对引用XML Schema并根据该Schema有效的XML文档计算XPath 2.0或3.1表达式时,您必须显式地构造或转换未通过操作隐式转换为所需数据类型的数据类型。在内置XPath引擎使用的XPath 2.0和3.1数据模型中,XML文档中所有原子化的节点值都被分配了xs:untypedAtomic数据类型。xs:untypedAtomic类型适用于隐式类型转换。例如,xs:untypedAtomic("1") + 1表达式的结果为2 ,因为通过加号运算符将xs:untypedAtomic值隐式转换为xs:double。算术运算符将操作数隐式转换为xs:double。比较运算符在比较前将操作数转换为xs:string

 

然而,在某些情况下,必须将数据类型显式转换为所需的数据类型。例如,如果您有两个元素,startDateendDate,它们在XML Schema中被定义为xs:date类型。当使用XPath 2.0表达式endDate - startDate时,会显示一个错误。另一方面,如果您使用 xs:date(endDate) - xs:date(startDate)(endDate cast as xs:date) - (startDate cast as xs:date),则表达式将正确计算为类型为一个xs:dayTimeDuration类型的单个序列。

 

请注意: XPath计算器使用的XPath引擎也被Altova XSLT引擎使用,因此XSLT样式表中未被隐式转换为所需数据类型的XPath 2.0或3.1表达式必须显式构造或转换为所需的数据类型。

 

字符和实体引用的字符串长度

当字符和实体引用作为string-length()函数的输入字符串时,引用不能被解析,并返回未解析的文本字符串的长度。然而,在XSLT环境下,这些引用会具有含义,并返回解析的字符串的长度。

 

XPath 2.0和3.1函数支持

参见附录

 

© 2017-2023 Altova GmbH