如何获取值类型

时间:2018-07-12 01:54:56

标签: xslt xpath

请教我。

有没有一种方法可以获取您指定的变量的类型? 例如,我正在考虑使用获取类型并将其输出到消息中,或者比较类型以形成条件的方法。

还是可以做到?

<!-- example -->
<xsl:message select="[get_type_function]([any_variable_as_string])" />

<!-- message -->
xs:string

最好的问候。

1 个答案:

答案 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

也只是给出整数。