2011-09-11 2 views
2

xpath가 FireFox에서 작동하는 방식을 알아 내려고했지만 단순한 네임 스페이스 접두사를 해결할 수 없습니다. lookupNamespaceURI는 null을 반환합니다.createNSResolver와 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> 

답변

1

XML 또는 XHTML MIME 형식으로 문서를 제공해야합니다. Content-Type: application/xml 또는 Content-Type: application/xhtml+xml (예 : http://home.arcor.de/martin.honnen/xml/test2011091101.xhtml). 당신이 텍스트/HTML로 제공하는 경우 네임 스페이스 해상도가 작동한다고 생각하지 않습니다.

+0

보인다. 감사! –

1

당신은 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; 
} 
관련 문제