Xml XPath:获取元素类型

Xml XPath:获取元素类型,xml,xpath,Xml,Xpath,这是一个XPath查询,它将打印文件中每个元素的完整路径 for $boy in //* return string-join(($boy/ancestor-or-self::*/name()), "::") 如何获得元素的类型(我首先需要知道基元类型:xs:integer,xs:string,等等)?没有确定元素类型的函数。当您使用flwor表达式时,我想您的XPath处理器支持XPath2.0:然后您可以使用的实例来确定类型,例如 xs:string的“foo”实例 1个xs:integ

这是一个XPath查询,它将打印文件中每个元素的完整路径

for $boy in //*
return string-join(($boy/ancestor-or-self::*/name()), "::")

如何获得元素的类型(我首先需要知道基元类型:
xs:integer
xs:string
,等等)?

没有确定元素类型的函数。当您使用flwor表达式时,我想您的XPath处理器支持XPath2.0:然后您可以使用的
实例来确定类型,例如

  • xs:string的“foo”实例
  • 1个xs:integer实例
  • /*元素的实例()*

您可以使用(该示例使用XQuery,在XPath中您无法定义函数),但我现在无法真正提出XPath应用程序示例。

Jens Erat的答案就XPath 2.0标准而言是正确的

在Saxon中(您需要EE来感知模式),有一个扩展函数

saxon:type-annotation()
它为您提供了一个值的类型注释作为QName,以及另一个

saxon:type
它将类型作为模式组件,表示为函数项;通过向该函数提供所需的属性名称,可以获取该类型的特定属性(包括其名称)。详情见

但我知道这不是你想要的;如果一个元素已被模式验证为整数,它将给出xs:integer的结果,而不是element()。不过,它可以满足您对原子值的要求