1

EXSLT は、XSLT に一連の便利な拡張機能を提供します。おそらくほとんどの人が exslt:node-set 関数を使ったことがあるでしょう。EXSLT によって指定される他の関数の 1 つは、「exslt:object-type」です。残念ながら、ほとんどのブラウザー (Firefox を除く) はこの機能をサポートしていないようです。参照: http://greenbytes.de/tech/tc/xslt/ スクリプトを使用して IE でこの機能を実装することはできましたが、Google Chrome の回避策が見つからないようです。(これは、IE が Chrome よりも優れていると思われる場合の 1 つです)。

私のアプリケーションの主な目的は、引数が「ノード セット」であるかどうかを調べることです。または、より正確に言うと、xsl:apply-templates で引数を選択できる場合。

IE の実装は次のようになります。

    <msxso:script language="JScript" implements-prefix="exslt">  
       <![CDATA[
         this['object-type'] = function(x) {
           スイッチ (x の型) {
            case "number": return "number";
            case "string": return "string";
            case "object": return "node-set";
            デフォルト: x の型を返す
           }        
         }
      ]]>
    </msxso:スクリプト>   

問題は、Google Chrome で同様のことを行う方法です。

これは完全に自動化されたプロセスであると想定されているため、解決策はソース スタイルシートを手動で書き直すことではないことを理解してください。

私のシナリオは次のとおりです。エージェントが 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 に答える