这是一个XPath查询这将打印的文件的XPath:获得元素类型
for $boy in //*
return string-join(($boy/ancestor-or-self::*/name()), "::")
如何获取元素的类型以及在每个元素的完整路径(我需要最重要的是知道的基本类型:xs:integer
,xs:string
等)?
这是一个XPath查询这将打印的文件的XPath:获得元素类型
for $boy in //*
return string-join(($boy/ancestor-or-self::*/name()), "::")
如何获取元素的类型以及在每个元素的完整路径(我需要最重要的是知道的基本类型:xs:integer
,xs:string
等)?
没有确定元素类型的函数。当你使用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应用程序示例。
对于XPath 2.0标准,Jens Erat的回答是正确的。
在撒克逊(您需要EE的模式感知)有一个扩展功能
saxon:type-annotation()
它给你一个值作为QName的类型标注,而另一个
saxon:type
,让你作为模式组件的类型,表示为一个函数项;您可以通过向该函数提供所需的属性名称来获取该类型的特定属性(包括其名称)。在
http://www.saxonica.com/documentation/#!functions/saxon
的细节,但我认为这是不太你要的。如果一个元素已经被模式验证为一个整数,它将给出结果为xs:integer,而不是element()。尽管如此,它可以满足你对原子值的要求。
http://stackoverflow.com/questions/14118670/check-type-of-node-in-xsl-template –