Как использовать createNSResolver с lookupNamespaceURI напрямую? - PullRequest
2 голосов
/ 11 сентября 2011

Я пытаюсь понять, как работает xpath в FireFox, но я не могу определить простой префикс пространства имен.LookupNamespaceURI продолжает возвращать ноль.

Мне не удалось найти какие-либо рабочие примеры в сети, поэтому мне интересно, правильно ли я использую эту функцию.Любое понимание было бы очень полезно.

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events">
    <head>
        <script type="text/javascript">
            var testResolver = function()
            {
                var resolver = document.createNSResolver(document.documentElement);
                alert(resolver.lookupNamespaceURI('ev'));
            }

        </script>
    </head>

    <body onload="testResolver()">
    </body>
</html>

Ответы [ 2 ]

1 голос
/ 22 мая 2012

Вы можете использовать следующий метод для создания распознавателя пространства имен для документа HTML:

function createNSResolver(document) {
    var ns = {};
    if (document.documentElement) {
        var attrs = document.documentElement.attributes;
        for (var i = 0; i < attrs.length; ++i) {
            if (attrs[i].name.indexOf("xmlns:") == 0) {
                ns[attrs[i].name.substring(6)] = attrs[i].value;
            }
        }
    }
    var nsResolver = function nsResolver(prefix) {
        return ns[prefix] || null;
    };
    nsResolver.lookupNamespaceURI = nsResolver;
    return nsResolver;
}
1 голос
/ 11 сентября 2011

Убедитесь, что вы используете документ с типом MIME XML или XHTML, например, Content-Type: application/xml или Content-Type: application/xhtml+xml (например, http://home.arcor.de/martin.honnen/xml/test2011091101.xhtml).. Если вы используете text / html, я не думаю, что разрешение пространства имен будет работать.

...