سؤال

عند تشغيل على صفحة الأقسام المختلفة، لا يبدو XPath لإرجاع أي نتائج.

var result = document.evaluate( "//a/img", document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );

وعلى سبيل المثال بإرجاع مجموعة نتائج فارغة. ما هي المشكلة هنا، وكيف يمكنني إصلاحه؟

هل كانت مفيدة؟

المحلول

وعناصر الأقسام المختلفة ليست في مساحة فارغة، بحيث يكون لديك لتمرير مساحة محلل إلى الأسلوب:

function resolver(prefix) {
    return prefix === 'x' ? 'http://www.w3.org/1999/xhtml' : null;
}
var result = document.evaluate( "//x:a/x:img", document.body, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );

نصائح أخرى

وطيب مع هذا الحل، ولكن أنا الآن باستخدام السابقة-الأخوة في xpathExpression، وأنا أحاول مع ما يلي:

function nsResolver(prefix){
    var ns = {
        'mathml' : 'http://www.w3.org/1998/Math/MathML', // for example's sake only
        'h' : 'http://www.w3.org/1999/xhtml'
    };
    return ns[prefix];
}

وبعد ذلك:

document.evaluate('//h:' + node.tagName + '/preceding-sibling::' + node.tagName, node, nsResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength

وهذه العودة دائما 0 مع الأقسام المختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top