XSLT和XPath/XQuery函数
本部分列出了可在XPath和/或XQuery表达式中使用的Altova扩展函数和其他扩展函数。Altova扩展函数可以与Altova的XSLT和XQuery引擎一起使用,并提供除W3C标准中定义的函数库中可用的功能之外的功能。
本部分主要介绍了Altova为提供附加操作而创建的XPath/XQuery扩展函数。Altova的XSLT和XQuery引擎可根据本部分中描述的规则计算这些函数。有关常规的XPath/XQuery函数的更多信息,请参见Altova的XPath/XQuery函数参考。
一般事项
请注意以下几点:
•在调用W3C规范中定义的主函数库中的函数时,可以不用前缀。这是因为Altova XSLT和XQuery引擎将不带前缀的函数视为属于http://www.w3.org/2005/xpath-functions命名空间,该命名空间是XPath/XQuery函数规范中指定的默认函数命名空间。如果该命名空间是在XSLT或XQuery文档中明确声明的,您可以选择将该命名空间声明中使用的前缀也用于函数名称。
•一般来说,如果一个函数需要一个包含一个项的序列作为参数,而提交的是一个包含多个项的序列,则将返回一个错误。
•所有的字符串比较都是通过使用Unicode代码点排序规则完成的。
•作为QName的结果是以[prefix:]localname的形式进行序列化的。
xs:decimal的精度
精度是指数字中的位数,规范要求至少有18位。对于生成xs:decimal类型结果的除法运算,精度为小数点后19位,无四舍五入。
隐式时区
在需要比较两个date、time或dateTime的值时,需要知道被比较的值的时区。当在这类值中未给出明确的时区时,会使用隐式时区。隐式时区取自系统时钟,并且可以使用implicit-timezone()函数检查其值。
排序规则
默认排序规则是Unicode代码点排序规则,它将根据Unicode代码点对字符串进行比较。该引擎使用Unicode排序算法。其他支持的排序规则是下方给出的ICU排序规则;要使用这些规则之一,请提供下表所列的URI。任何字符串的比较,包括max和min函数,都会根据指定的排序规则进行。如果未指定排序规则,则使用默认的Unicode代码点排序规则。
语言 | URI |
da: 丹麦语 | da_DK |
de: 德语 | de_AT, de_BE, de_CH, de_DE, de_LI, de_LU |
en: 英语 | en_AS, en_AU, en_BB, en_BE, en_BM, en_BW, en_BZ, en_CA, en_GB, en_GU, en_HK, en_IE, en_IN, en_JM, en_MH, en_MP, en_MT, en_MU, en_NA, en_NZ, en_PH, en_PK, en_SG, en_TT, en_UM, en_US, en_VI, en_ZA, en_ZW |
es: 西班牙语 | es_419, es_AR, es_BO, es_CL, es_CO, es_CR, es_DO, es_EC, es_ES, es_GQ, es_GT, es_HN, es_MX, es_NI, es_PA, es_PE, es_PR, es_PY, es_SV, es_US, es_UY, es_VE |
fr: 法语 | fr_BE, fr_BF, fr_BI, fr_BJ, fr_BL, fr_CA, fr_CD, fr_CF, fr_CG, fr_CH, fr_CI, fr_CM, fr_DJ, fr_FR, fr_GA, fr_GN, fr_GP, fr_GQ, fr_KM, fr_LU, fr_MC, fr_MF, fr_MG, fr_ML, fr_MQ, fr_NE, fr_RE, fr_RW, fr_SN, fr_TD, fr_TG |
it: 意大利语 | it_CH, it_IT |
ja: 日语 | ja_JP |
nb: 挪威语(博克马尔语) | nb_NO |
nl: 荷兰语 | nl_AW, nl_BE, nl_NL |
nn: 挪威尼诺斯克语 | nn_NO |
pt: 葡萄牙语 | pt_AO, pt_BR, pt_GW, pt_MZ, pt_PT, pt_ST |
ru: 俄语 | ru_MD, ru_RU, ru_UA |
sv: 瑞典语 | sv_FI, sv_SE |
命名空间轴
命名空间轴在XPath 2.0中已弃用。但是,支持使用命名空间轴。要用XPath 2.0机制访问命名空间信息,请使用in-scope-prefixes()、namespace-uri()和namespace-uri-for-prefix()函数。