1

最近、IE 9 の適切な X-Path サポートの欠如にパッチを当てるために wgxpath を含めようとしましたが、名前空間を使用しようとすると奇妙なエラー メッセージが表示されます (「エラー: トークンが正しくありません: :」)。

XHR 応答から取得した XML ドキュメントに使用しようとした人はいますか? 私は次のことを試しています:

function evaluate(node, expression, namespaces) {
    var resolver = null;

    if(namespaces) {
        resolver = function(prefix) { return namespaces[prefix]; };
    }
    else if(document.createNSResolver) {
        resolver = document.createNSResolver(node);
    }

    var results = document.evaluate(expression, node, resolver, XPathResult.ANY_TYPE, null);

    var value = null;
    switch(results.resultType) {
        case XPathResult.NUMBER_TYPE:
            value = results.numberValue;
            break;

        case XPathResult.STRING_TYPE:
            value = results.stringValue;
            break;

        case XPathResult.BOOLEAN_TYPE:
            value = results.booleanValue;
            break;

        case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
        case XPathResult.ORDERED_NODE_ITERATOR_TYPE:
            value = [];
            var result = null;
            while(result = results.iterateNext()) {
                value.push(result);
            }
            break;

        case XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:
        case XPathResult.ORDERED_NODE_SNAPSHOT_TYPE:
            value = [];
            for(var index = 0; index < results.snapshotLength; ++index) {
                value.push(results.snapshotItem(index));
            }
            break;

        case XPathResult.ANY_UNORDERED_NODE_TYPE:
        case XPathResult.FIRST_ORDERED_NODE_TYPE:
            value = results.singleNodeValue;
            break;
    }

    return value;
};

IE で、静的 SVG ファイルから取得した XML ドキュメントで「/svg:svg/svg:title/text()」を評価すると、失敗します。

ここで何か間違ったことをしていますか?

また、Chrome では正常に動作しますが、Firefox では正常に動作しないことに気付きました。次のエラー メッセージが表示されます: «WrongDocumentError: ノードは、それが作成されたドキュメント以外のドキュメントでは使用できません»。

wgxpath はウィンドウにインストールされるため、受信する XHR XML ドキュメントに対して wgxpath を設定する方法がわかりません...

4

0 に答える 0