这是一个XPath查询,它将打印文件中每个元素的完整路径
for $boy in //*
return string-join(($boy/ancestor-or-self::*/name()), "::")
如何获取元素的类型(我需要知道最基本的类型:xs:integer
,xs:string
等)?
答案 0 :(得分:2)
没有确定元素类型的函数。当你使用flwor表达式时,我想你的XPath处理器支持XPath 2.0:然后你可以使用instance of
来确定类型,例如。
"foo" instance of xs:string
1 instance of xs:integer
//* instance of element()*
您可以使用if
/else
-chain to determine the type(该示例使用XQuery,在XPath中您无法定义函数),但我现在无法真正想出一个XPath应用程序示例。
答案 1 :(得分:0)
就XPath 2.0标准而言,Jens Erat的答案是正确的。
在Saxon中(你需要EE用于模式识别),有一个扩展函数
saxon:type-annotation()
为您提供值的类型注释为QName,另一个为
saxon:type
它为您提供类型作为架构组件,表示为函数项;您可以通过向此函数提供所需的属性名称来获取该类型的特定属性(包括其名称)。详情
http://www.saxonica.com/documentation/#!functions/saxon
但我发现这不是你所要求的;如果一个元素已被模式验证为整数,它将结果为xs:integer,而不是element()。不过,它可以满足您对原子价值的要求。