أداة اختبار XPath
مستند XML أو HTML
الصق XML أو HTML بما لا يتجاوز 1,000,000 حرف. يجري التقييم داخل هذا المتصفح باستخدام XPath 1.0.
تعبير XPath 1.0 مطلق أو نسبي. تُسجَّل البادئات المعلنة في المستند تلقائيًا، ويتاح نطاق الأسماء الافتراضي عبر البادئة d.
كتابة XPath لاستخراج البيانات من الويب أو لـ XSLT تتحول إلى تخمين متكرر إن لم تتوفر لديك بيئة تجربة حية. تستقبل هذه الأداة مستند XML أو HTML في لوحة وتعبيرك في لوحة أخرى، ثم تقيّم XPath 1.0 بمحرك متصفحك نفسه وتعرض كل عقدة مطابقة مع نوعها وسماتها ومحتواها النصي ووسومها المسلسلة. التعبيرات العددية مثل count(//book) تعيد قيمتها مباشرة، وبادئات نطاقات الأسماء المعلنة في المستند تُسجل تلقائيًا من أجلك. كل شيء يعمل داخل متصفحك: المستند لا يُرفع أبدًا إلى أي خادم.
كيف تختبر تعبير XPath
-
1
الصق XML أو HTML
يتحول الاكتشاف التلقائي إلى تحليل HTML المتساهل عندما يرى doctype أو عنصر جذر HTML، ويمكنك أيضًا فرض وضع XML أو HTML.
-
2
أدخل تعبير XPath
مطلق (`/library/book`) أو نسبي (`//div[@class='card']`)، أي تعبير XPath 1.0.
-
3
قيّم التعبير
ينفذ محرك XPath في متصفحك الاستعلام محليًا، ولا يُرسل أي شيء إلى أي خادم.
-
4
افحص النتائج
تعرض كل مطابقة نوع العقدة والسمات والنص المقتطع والوسوم المسلسلة، وتُعرض حتى 200 مطابقة.
أساسيات XPath 1.0
| التعبير | ما يطابقه |
|---|---|
/books/book |
عناصر <book> الأبناء المباشرون للجذر <books> |
//book |
كل <book> في أي مكان من المستند |
//book[@id='42'] |
عناصر <book> التي تساوي سمتها id القيمة 42 |
//book[1] |
أول <book> لدى كل أب (وليس في المستند كله) |
(//book)[1] |
أول <book> في المستند بأكمله |
//book[title='1984'] |
عناصر <book> التي نص <title> فيها هو «1984» |
//book/@id |
سمات id لجميع عناصر <book> |
//book[position() > 1] |
جميع عناصر <book> عدا الأول |
//book[last()] |
آخر <book> لدى كل أب |
التعبيرات العددية تعمل أيضًا: count(//book) يعيد رقمًا، وstring(//title) يعيد سلسلة نصية، وboolean(//book[@id]) يعيد صحيحًا أو خطأ. تعرض الأداة هذه القيم مباشرة بدلًا من قائمة عقد.
محاور شائعة غير child
ancestor::، جميع الأسلافfollowing-sibling::، الأشقاء التالون للعقدة الحاليةpreceding-sibling::، الأشقاء السابقونdescendant::، جميع الأحفادattribute::(اختصارها@)، سمات العقدة الحاليةparent::(اختصارها..)، العنصر الأب
خصوصيات HTML
ليس HTML لغة XML صارمة، لذلك تحلله الأداة بتساهل عبر محلل HTML الخاص بمتصفحك بدلًا من محلل XML الصارم. يُكتشف وضع HTML تلقائيًا من <!DOCTYPE html> أو من عنصر جذر <html>، ويمكنك فرض أي من الوضعين عبر قائمة اختيار وضع المستند. في وضع HTML تتحول أسماء الوسوم والسمات إلى أحرف صغيرة، فاكتب تعبير XPath بأحرف صغيرة: //div[@class] وليس //DIV[@CLASS].
نطاقات الأسماء
يتطلب XML الذي يستخدم نطاقات الأسماء تسجيل البادئات:
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
تفحص الأداة المستند بحثًا عن إعلانات xmlns وتسجل كل بادئة تلقائيًا، لذلك يعمل //content:encoded من دون أي خطوة إضافية. نطاق الأسماء الافتراضي (أي xmlns="..." بلا بادئة) لا بادئة له في المستند، لذلك تربطه الأداة بالبادئة d: اختر عناصر <item> في تغذية تستخدم نطاق أسماء افتراضيًا عبر //d:item. وتُعرض نطاقات الأسماء المسجلة إلى جانب النتائج.
ما لا تقيّمه هذه الأداة
تقيّم المتصفحات XPath 1.0، وهي اللهجة نفسها التي تستخدمها معظم أدوات استخراج البيانات. أما ميزات XPath 2.0 وما بعده، مثل matches(string, regex) وtokenize(string, delimiter) وتعبيرات for ... return وعوامل السلاسل المتتابعة، فليست جزءًا منها؛ ستجدها في سلاسل أدوات XSLT 2.0/3.0. يبقى XPath 1.0 الخيار الأكثر قابلية للنقل لاستخراج البيانات من الويب.
نصائح للاختبار
- ابدأ واسعًا ثم ضيّق. ابدأ بـ
//div، ثم//div[@class]، ثم قيمة class المحددة. - راجع إعلانات نطاقات الأسماء. معظم أخطاء «لماذا لا يعيد تعبير XPath شيئًا؟» سببها نطاقات الأسماء؛ انظر إلى قائمة نطاقات الأسماء المسجلة.
- انتبه لحالة الأحرف. يفرق XML بين حالتي الأحرف. ووضع HTML يحول الأسماء إلى أحرف صغيرة.
- جرب string() عند استخراج النص. يختلف
//p/text()عنstring(//p)عندما توجد وسوم متداخلة.
الأسئلة الشائعة
لا، بل XPath فقط. تدعم معظم المتصفحات الاثنين عبر document.querySelectorAll لمحددات CSS وdocument.evaluate لتعبيرات XPath. استخدم الأوضح للمهمة.
يحول تحليل HTML أسماء الوسوم والسمات إلى أحرف صغيرة. تأكد من أن تعبيرك يستخدم أحرفًا صغيرة: //div[@class] وليس //DIV[@CLASS]. وتحقق أيضًا من الوضع: فرض XML على HTML غير الدقيق يفشل بخطأ تحليل، بينما يحلله وضع HTML بتساهل.
تُسجل البادئات المعلنة في المستند تلقائيًا لتعبيرك. ويُربط نطاق الأسماء الافتراضي بالبادئة d، لذلك يختار //d:item عناصر <item> في مستند يستخدم نطاق أسماء افتراضيًا. وتُعرض الارتباطات النشطة مع النتائج.
لا. يقيّم المستند والتعبير محرك XPath الخاص بمتصفحك نفسه، ولا يُرسلان إلى خادمنا ولا يُخزنان ولا يُضافان إلى عنوان الصفحة؛ يبقيان فقط في جلسة هذا المتصفح لكي يتمكن العرض متعدد الخطوات من إظهار نتائجك.
أدوات ذات صلة
مرجع جدول ASCII
جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.
مرجع أحرف HTML
قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.
عدّاد FPS
قِس معدل الإطارات FPS في المتصفح عبر requestAnimationFrame: تنعيم، وأدنى وأقصى معدل إطارات، وحد تنبيه، ورسم بياني اختياري. يعمل محليًا بلا رفع ملفات وبلا API.
منسق JSON
الصق JSON لتنسيقه بمسافتين أو أربع مسافات، أو تصغيره إلى ناتج مضغوط، أو فحص بنيته بسرعة قبل نسخ النتيجة.
مولد لوحة الألوان
أنشئ لوحات ألوان أحادية أو متجاورة أو مكملة أو ثلاثية أو رباعية من لون HEX أساسي، ثم صدّر متغيرات CSS جاهزة للنسخ.
محول ASCII إلى Hex
حوّل نص ASCII إلى قيم بايت سداسية عشرية. يستخدم الناتج رقمين ست عشريين لكل محرف، جاهزة لتفريغات الذاكرة أو تتبعات الحزم أو جداول البرامج الثابتة.