1

EXSLT 为 XSLT 提供了一组有用的扩展。可能我们大多数人都使用过 exslt:node-set 函数。EXSLT 指定的另一个函数之一是“exslt:object-type”。不幸的是,大多数浏览器(Firefox 除外)似乎不支持此功能。参考: http: //greenbytes.de/tech/tc/xslt/ 虽然我设法在 IE 中使用脚本实现了这个功能,但我似乎没有找到适用于 Google Chrome 的解决方法。(这是 IE 似乎优于 Chrome 的时代之一)。

我的应用程序的主要目标是找出参数是否是“节点集”。或者更准确地说 - 如果可以在 xsl:apply-templates 中选择参数。

IE 实现可能与以下类似:

    <msxso:script language="JScript" implements-prefix="exslt">  
       <![CDATA[
         this['object-type'] = function(x) {
           开关(类型 x){
            案例“数字”:返回“数字”;
            案例“字符串”:返回“字符串”;
            案例“对象”:返回“节点集”;
            默认值:返回类型 x
           }        
         }
      ]]>
    </msxso:脚本>   

所以问题是 - 如何在谷歌浏览器中做类似的事情。

请理解,解决方案不是手动重写源样式表,因为这应该是完全自动化的过程。

我的场景如下:代理提交 XML + XSLT,该过程自动重写 XSLT 以将 xsl:value-of 转换为 xsl:apply-templates。虽然 xsl:value-of 的 select 属性的类型无关紧要,但当 select 属性无法解析为节点集时,xsl:apply-templates 将失败。

4

1 回答 1

0

使用库的组合进行类型检查:

于 2015-12-02T05:26:27.837 回答