请教我。
有没有一种方法可以获取您指定的变量的类型? 例如,我正在考虑使用获取类型并将其输出到消息中,或者比较类型以形成条件的方法。
还是可以做到?
<!-- example -->
<xsl:message select="[get_type_function]([any_variable_as_string])" />
<!-- message -->
xs:string
最好的问候。
答案 0 :(得分:0)
如果声明为<xsl:variable name="var1" as="item()*" select="1"/>
,您期望变量的类型是您想要的类型,然后是声明的item()*
还是{{1 }}或xs:integer
?在XSLT 1和EXSLT的上下文中,有http://exslt.org/exsl/functions/object-type/index.html用于获取基本类型xs:integer*
,但是XSLT / XPath 1具有相当简单的类型系统,并且无论如何在XSLT / XPath 2中都不声明类型。或3类型系统要复杂得多。
在Saxon 9 EE或PE的环境中,http://saxonica.com/html/documentation/functions/saxon/type.html是这样的,
'string', 'number', 'boolean', 'node-set', 'RTF' or 'external'
你得到
<xsl:variable name="var1" as="item()*" select="1"/>
<xsl:message select="saxon:type($var1)('name')" xmlns:saxon="http://saxon.sf.net/"/>
<xsl:variable name="var2" as="item()*" select="'foo'"/>
<xsl:message select="saxon:type($var2)('name')" xmlns:saxon="http://saxon.sf.net/"/>
但是我不确定您将如何获得异类序列的拟合类型
integer
string
也只是给出整数。