XPath

لغة XPath ( لغة مسار XML ) هي لغة تعبير مصممة لدعم الاستعلام عن مستندات XML أو تحويلها . وقد تم تعريفها من قبل اتحاد شبكة الويب العالمية (W3C) في عام 1999، [ 1 ] ويمكن استخدامها لحساب القيم (مثل السلاسل النصية أو الأرقام أو القيم المنطقية ) من محتوى مستند XML. يتوفر دعم XPath في التطبيقات التي تدعم XML، مثل متصفحات الويب، والعديد من لغات البرمجة.

تعتمد لغة XPath على تمثيل شجري لمستند XML ، وتتيح إمكانية التنقل داخل الشجرة، واختيار العقد بناءً على معايير متنوعة. [ 2 ] [ 3 ] في الاستخدام الشائع (وإن لم يكن ذلك في المواصفات الرسمية)، يُشار إلى تعبير XPath غالبًا ببساطة باسم "XPath".

تم استخدام مجموعات فرعية من لغة استعلام XPath في مواصفات W3C الأخرى مثل XML Schema و XForms ومجموعة علامات التدويل (ITS) ، والتي كانت مدفوعة في الأصل برغبة في توفير بناء جملة ونموذج سلوك مشترك بين XPointer و XSLT .

تم اعتماد XPath من قبل عدد من مكتبات وأدوات معالجة XML، والعديد منها يقدم أيضًا محددات CSS ، وهو معيار W3C آخر، كبديل أبسط لـ XPath.

الإصدارات

توجد عدة إصدارات من XPath قيد الاستخدام. نُشر الإصدار XPath 1.0 عام 1999، والإصدار XPath 2.0 عام 2007 (مع إصدار ثانٍ عام 2010)، والإصدار XPath 3.0 عام 2014، والإصدار XPath 3.1 عام 2017. ومع ذلك، لا يزال الإصدار XPath 1.0 هو الأكثر انتشارًا. [ 1 ]

  • أصبح XPath 1.0 توصية في 16 نوفمبر 1999 ويتم تنفيذه واستخدامه على نطاق واسع، إما بمفرده (يتم استدعاؤه عبر واجهة برمجة التطبيقات من لغات مثل Java أو C# أو Python أو JavaScript )، أو مضمنًا في لغات مثل XSLT أو XProc أو XML Schema أو XForms .
  • أصبحت XPath 2.0 توصية رسمية في 23 يناير 2007، ونُشرت طبعة ثانية منها في 14 ديسمبر 2010. توجد عدة تطبيقات لها، لكنها ليست شائعة الاستخدام مثل XPath 1.0. مواصفات لغة XPath 2.0 أوسع بكثير من XPath 1.0، وتُغير بعض المفاهيم الأساسية للغة، مثل نظام الأنواع.
    أبرز التغييرات هو أن XPath 2.0 مبنيٌّ على نموذج بيانات XQuery وXPath (XDM) الذي يتميز بنظام أنواع أكثر ثراءً. [ أ ] كل قيمة الآن عبارة عن تسلسل (تُعتبر القيمة الذرية أو العقدة الواحدة تسلسلًا بطول واحد). تم استبدال مجموعات عقد XPath 1.0 بتسلسلات عقد، والتي يمكن أن تكون بأي ترتيب.
    لدعم مجموعات أنواع أكثر ثراءً، يوفر XPath 2.0 مجموعة موسعة للغاية من الوظائف والمعاملات.
    في الواقع، تُعدّ XPath 2.0 مجموعة فرعية من XQuery 1.0، إذ تشتركان في نموذج البيانات نفسه ( XDM ). وتُقدّم XPath 2.0 forتعبيرًا مُختصرًا من تعبيرات " FLWOR " في XQuery. ويمكن وصف هذه اللغة من خلال سرد أجزاء XQuery التي تُستثنى منها، وأهمها مقدمة الاستعلام، ومنشئات العناصر والسمات، وبقية صيغة "FLWOR"، والتعبير نفسه typeswitch.
  • أصبحت XPath 3.0 توصيةً رسميةً في 8 أبريل 2014. [ 4 ] وتتمثل أبرز ميزاتها الجديدة في دعم الدوال كقيم من الدرجة الأولى. [ 5 ] تُعد XPath 3.0 مجموعةً فرعيةً من XQuery 3.0، وتوجد معظم التطبيقات الحالية (أبريل 2014) كجزء من محرك XQuery 3.0.
  • أصبح XPath 3.1 توصية في 21 مارس 2017. [ 6 ] يضيف هذا الإصدار أنواع بيانات جديدة: الخرائط والمصفوفات، إلى حد كبير لدعم JSON .
تعبير XPath مطبق على ملف XML

بناء الجملة والدلالات (XPath 1.0)

أهم أنواع التعبيرات في XPath هو مسار الموقع . يتكون مسار الموقع من سلسلة من خطوات الموقع . تحتوي كل خطوة موقع على ثلاثة مكونات:

يُقيّم تعبير XPath بالنسبة إلى عقدة سياقية . يُحدد مُحدد المحور، مثل "child" أو "descendant"، اتجاه التنقل من العقدة السياقية. يُستخدم اختبار العقدة والشرط لتصفية العقد المُحددة بواسطة مُحدد المحور: على سبيل المثال، يتطلب اختبار العقدة "A" أن تحمل جميع العقد التي يتم التنقل إليها التسمية "A". يمكن استخدام الشرط لتحديد أن العقد المُختارة لها خصائص معينة، والتي تُحددها تعبيرات XPath نفسها.

تأتي صيغة XPath بنوعين: الصيغة المختصرة ، وهي أكثر إيجازًا وتتيح كتابة وقراءة XPath بسهولة باستخدام رموز وبنى بديهية، وفي كثير من الحالات مألوفة. أما الصيغة الكاملة فهي أكثر تفصيلًا، لكنها تسمح بتحديد خيارات أكثر، وتكون أكثر وضوحًا عند قراءتها بعناية.

بناء الجملة المختصر

تتيح الصيغة المختصرة العديد من القيم الافتراضية والاختصارات للحالات الشائعة. بافتراض أن ملف XML المصدر يحتوي على الأقل

<A> <B> <C/> </B> </A>

أبسط أشكال XPath تأخذ شكلاً مثل:

  • /A/B/C

يحدد هذا الأمر عناصر C التي هي عناصر فرعية لعناصر B، والتي بدورها عناصر فرعية لعنصر A الذي يشكل العنصر الخارجي في مستند XML. صُممت صيغة XPath لمحاكاة URI ( معرّف الموارد الموحد ) وصيغة مسار الملف على نمط Unix .

يمكن إنشاء تعبيرات أكثر تعقيدًا عن طريق تحديد محور آخر غير المحور الافتراضي "الفرعي"، أو اختبار عقدة آخر غير الاسم البسيط، أو المسندات، والتي يمكن كتابتها بين قوسين مربعين بعد أي خطوة. على سبيل المثال، التعبير

  • A//B/*[1]

يختار هذا التعبير أول عنصر فرعي ( *[1]مهما كان اسمه) لكل عنصر من النوع B يكون بدوره عنصرًا فرعيًا أو عنصرًا فرعيًا أعمق (مهما كان اسمه //) لعنصر من النوع A يكون بدوره عنصرًا فرعيًا لعقدة السياق الحالية (لا يبدأ التعبير بعلامة اقتباس مفردة /). يكون تأثير هذا التعبير [1]أقوى من /تأثير عامل التشغيل. لاختيار أول عقدة تم تحديدها بواسطة التعبير A//B/*، اكتب (A//B/*)[1]. لاحظ أيضًا أن قيم الفهرس في مُسندات XPath (أو بالأحرى، "مواضع التقارب" لمجموعات عقد XPath) تبدأ من 1، وليس من 0 كما هو شائع في لغات مثل C و Java.

بناء الجملة الموسع

في الصيغة الكاملة غير المختصرة، يُكتب المثالان أعلاه على النحو التالي

  • /child::A/child::B/child::C
  • child::A/descendant-or-self::node()/child::B/child::node()[position()=1]

هنا، في كل خطوة من خطوات XPath، يتم تحديد المحور (على سبيل المثال childأو descendant-or-self) بشكل صريح، متبوعًا بـ ::ثم اختبار العقدة ، مثل Aأو node()في الأمثلة أعلاه.

هنا نفس الشيء، ولكن بشكل أقصر:A//B/*[position()=1]

محددات المحور

تُشير مُحدِّدات المحاور إلى اتجاه التنقل داخل التمثيل الشجري لمستند XML. المحاور المتاحة هي: [ b ]

محددات المحور في XPath
بناء الجملة الكاملبناء الجملة المختصرملحوظات
ancestor
ancestor-or-self
attribute@@abcهو اختصار لـattribute::abc
childxyzهو اختصار لـchild::xyz
descendant
descendant-or-self////هو اختصار لـ/descendant-or-self::node()/
following
following-sibling
namespace
parent....هو اختصار لـparent::node()
preceding
preceding-sibling
self..هو اختصار لـself::node()

كمثال على استخدام محور السمات في صيغة مختصرة، //a/@hrefيحدد هذا التعبير السمة المسماة hrefفي aأي عنصر ضمن شجرة المستند. ويُستخدم التعبير . (اختصارًا لـ self::node() ) عادةً ضمن دالة شرطية للإشارة إلى العقدة المحددة حاليًا. على سبيل المثال، h3[.='See also']يحدد هذا التعبير عنصرًا يُسمى h3في السياق الحالي، ومحتواه النصي هو See also.

اختبارات العقدة

قد تتضمن اختبارات العقد أسماء عقد محددة أو تعبيرات أكثر عمومية. في حالة مستند XML gsتم فيه تعريف بادئة مساحة الاسم، //gs:enquiryسيتم العثور على جميع enquiryالعناصر في تلك المساحة، وسيتم //gs:*العثور على جميع العناصر، بغض النظر عن الاسم المحلي، في تلك المساحة.

تتضمن تنسيقات اختبار العقد الأخرى ما يلي:

تعليق()
يعثر على عقدة تعليق XML، على سبيل المثال<!-- Comment -->
نص()
يعثر على عقدة من نوع نص باستثناء أي عناصر فرعية، على سبيل المثال helloفي<k>hello<m> world</m></k>
تعليمات المعالجة()
يعثر على تعليمات معالجة XML مثل . في هذه الحالة، سيتطابق.<?phpecho$a;?>processing-instruction('php')
العقدة()
يجد أي عقدة على الإطلاق.

المسندات

يمكن استخدام الدوال الشرطية، المكتوبة كتعبيرات بين قوسين مربعين، لتصفية مجموعة عقد وفقًا لشرط معين. على سبيل المثال، aتُرجع الدالة مجموعة عقد (جميع العناصر aالتي تُعد أبناءً لعقدة السياق)، وتحتفظ فقط بالعناصر التي تحتوي على سمة بقيمة معينة .a[@href='help.php']hrefhelp.php

لا يوجد حد لعدد الشروط في الخطوة الواحدة، ولا يشترط أن تقتصر على الخطوة الأخيرة في مسار XPath. كما يمكن تداخلها إلى أي عمق. تبدأ المسارات المحددة في الشروط من سياق الخطوة الحالية (أي سياق اختبار العقدة السابقة مباشرةً) ولا تُغير هذا السياق. يجب استيفاء جميع الشروط لحدوث التطابق.

عندما تكون قيمة المسند عددية، فإنها تُعدّ اختصارًا برمجيًا للمقارنة مع موضع العقدة في مجموعة العقد (كما هو مُحدد بواسطة الدالة position()). لذا، p[1]فإن هي اختصار لـ وتختار أول عنصر فرعي، بينما هي اختصار لـ وتختار آخر عنصر فرعي لعقدة السياق.p[position()=1]pp[last()]p[position()=last()]p

في حالات أخرى، تُحوّل قيمة الشرط تلقائيًا إلى قيمة منطقية. عندما يُقيّم الشرط إلى مجموعة عقد، تكون النتيجة صحيحة إذا كانت مجموعة العقد غير فارغة . وبالتالي، يتم اختيار العناصر التي تحتوي على سمة مُسماة .p[@x]px

مثال أكثر تعقيدًا: يختار التعبير قيمة سمة العنصر الأول من بين العناصر الفرعية لعقدة السياق التي تم تعيين سمتها إلى ، بشرط أن يكون للعنصر الرئيسي في المستند أيضًا سمة معينة . لا تؤثر الإشارة إلى سمة العنصر الرئيسي في الشرط الأول على سياق الشروط الأخرى ولا على سياق خطوة الموقع نفسها.a[/html/@lang='en'][@href='help.php'][1]/@targettargetahrefhelp.phphtmllangen

يُعدّ ترتيب الشروط مهمًا إذا كانت الشروط تختبر موضع عقدة. يأخذ كل شرط مجموعة عقد، ويعيد مجموعة عقد أصغر (محتملة). لذا، سيجد الشرط تطابقًا فقط إذا كان الابن الأول لعقدة السياق يُحقق الشرط ، بينما سيجد الشرط الابن الأول الذي يُحقق هذا الشرط.a[1][@href='help.php']a@href='help.php'a[@href='help.php'][1]a

الدوال والمعاملات

يحدد XPath 1.0 أربعة أنواع من البيانات: مجموعات العقد (مجموعات من العقد بدون ترتيب جوهري)، والسلاسل، والأرقام، والقيم المنطقية.

المشغلون المتاحون هم:

  • تُستخدم المعاملات /، //و [...]في تعبيرات المسار، كما هو موضح أعلاه.
  • عامل الاتحاد، |الذي يشكل اتحاد مجموعتين من العقد.
  • عوامل التشغيل المنطقية andو or، ودالةnot()
  • عوامل التشغيل الحسابية +، -، *، div(القسمة)، وmod
  • عوامل المقارنة =، !=، <، >، <=،>=

تتضمن مكتبة الدوال ما يلي:

  • دوال لمعالجة السلاسل النصية: concat()، substring()، contains()، substring-before()، substring-after()، translate()، normalize-space()، string-length()
  • دوال لمعالجة الأرقام: sum()، round()، floor()، ceiling()
  • دوال للحصول على خصائص العقد: name()، local-name()، namespace-uri()
  • دوال للحصول على معلومات حول سياق المعالجة: position()، last()
  • دوال تحويل الأنواع: string()، number()، boolean()

بعض الوظائف الأكثر استخدامًا موضحة بالتفصيل أدناه. [ ج ]

دوال مجموعة العقد

موضع()
تقوم هذه الدالة بإرجاع رقم يمثل موضع هذه العقدة في تسلسل العقد التي تتم معالجتها حاليًا (على سبيل المثال، العقد التي تم تحديدها بواسطة تعليمة xsl:for-each في XSLT).
عدد ( مجموعة العقد )
تُرجع هذه الدالة عدد العقد في مجموعة العقد المُقدمة كوسيط لها.

دوال السلاسل النصية

سلسلة نصية ( كائن ؟)
تحوّل هذه الدالة أيًا من أنواع بيانات XPath الأربعة إلى سلسلة نصية وفقًا لقواعد مُدمجة. إذا كانت قيمة الوسيط عبارة عن مجموعة عقد، فإنها تُعيد قيمة السلسلة النصية للعقدة الأولى في ترتيب المستند، متجاهلةً أي عقد أخرى.
concat( string , string , string *)
يقوم بدمج سلسلتين نصيتين أو أكثر
يبدأ بـ ( s1 ، s2 )
تُرجع trueإذا s1بدأت بـs2
يحتوي على ( s1 ، s2 )
يتم إرجاع القيمة trueإذا s1كانت تحتوي علىs2
substring( string , start , length ?)
مثال: substring("ABCDEF",2,3)الإرجاع BCD.
substring-before( s1 , s2 )
مثال: substring-before("1999/04/01","/")الإرجاع1999
substring-after( s1 , s2 )
مثال: substring-after("1999/04/01","/")الإرجاع04/01
طول السلسلة النصية (السلسلة النصية؟)
يُرجع عدد الأحرف في السلسلة
normalize-space( string ?)
تُزال جميع المسافات البيضاء البادئة واللاحقة ، وتُستبدل أي سلسلة من أحرف المسافات البيضاء بمسافة واحدة. يُعدّ هذا مفيدًا للغاية عندما يكون تنسيق XML الأصلي مُنسقًا بشكل جميل ، مما قد يجعل معالجة السلاسل النصية اللاحقة غير موثوقة.

الدوال المنطقية

ليس ( منطقي )
ينفي أي تعبير منطقي.
حقيقي()
النتيجة صحيحة .
خطأ شنيع()
النتيجة خاطئة .

الدوال العددية

مجموع ( مجموعة العقد )
يقوم بتحويل قيم السلسلة لجميع العقد التي تم العثور عليها بواسطة وسيط XPath إلى أرقام، وفقًا لقواعد التحويل المضمنة، ثم يعيد مجموع هذه الأرقام.

أمثلة على الاستخدام

يمكن إنشاء التعبيرات داخل الشروط باستخدام المعاملات: و . يمكن دمج التعبيرات المنطقية باستخدام الأقواس والمعاملات المنطقية و، بالإضافة إلى الدالة المذكورة أعلاه. يمكن استخدام و في العمليات الحسابية العددية . يمكن أن تتكون السلاسل النصية من أي أحرف يونيكود .=, !=, <=, <, >=>()andornot()*, +, -, divmod

//item[@price>2*@discount]يختار العناصر التي تكون قيمة سمة السعر الخاصة بها أكبر من ضعف القيمة العددية لسمة الخصم الخاصة بها.

يمكن دمج مجموعات العقد بأكملها ( 'unioned' ) باستخدام حرف الخط العمودي |. يمكن العثور على مجموعات العقد التي تستوفي شرطًا واحدًا أو أكثر من عدة شروط عن طريق دمج الشروط داخل المسند باستخدام ' or'.

v[x or y] | w[z]سوف يعيد مجموعة عقد واحدة تتكون من جميع العناصر vالتي تحتوي على xعناصر yفرعية، بالإضافة إلى جميع العناصر wالتي تحتوي على zعناصر فرعية، والتي تم العثور عليها في السياق الحالي.

بناء الجملة والدلالات (XPath 2.0)

بناء الجملة والدلالات (XPath 3)

أمثلة

بافتراض وجود مستند XML نموذجي

<?xml version="1.0" encoding="utf-8"?> <Wikimedia> <projects> <project name= "Wikipedia" launch= "2001-01-05" > <editions> <edition language= "English" > en.wikipedia.org </edition> <edition language= "German" > de.wikipedia.org </edition> <edition language= "French" > fr.wikipedia.org </edition> <edition language= "Polish" > pl.wikipedia.org </edition> <edition language= "Spanish" > es.wikipedia.org </edition> </editions> </project> <project name= "Wiktionary" launch= "2002-12-12" > <editions> <edition language= "English" > en.wiktionary.org </edition> <edition language= "الفرنسية" > fr.wiktionary.org </edition> <edition language= "الفيتنامية" > vi.wiktionary.org </edition> <edition language= "التركية" > tr.wiktionary.org </edition> <edition language= "الإسبانية" > es.wiktionary.org </edition> </editions> </project> </projects> </Wikimedia>

تعبير XPath

/Wikimedia/projects/project/@name

يحدد سمات الاسم لجميع المشاريع، و

/ويكيميديا//إصدارات

يختار جميع إصدارات جميع المشاريع، و

/Wikimedia/projects/project/editions/edition[@language='English']/text()

يختار عناوين جميع مشاريع ويكيميديا ​​الإنجليزية (نص جميع editionالعناصر التي languageتكون سمة "English" فيها مساوية لـ "English" ). وما يلي:

/Wikimedia/projects/project[@name='Wikipedia']/editions/edition/text()

يحدد عناوين جميع صفحات ويكيبيديا (نص جميع editionالعناصر الموجودة تحت projectعنصر يحمل سمة اسم ويكيبيديا ).

التطبيقات

أدوات سطر الأوامر

لغة C/C++

فري باسكال

  • وحدة XPath مضمنة في المكتبات الافتراضية

تطبيقات لمحركات قواعد البيانات

جافا

تُعدّ حزمة Java جزءًا من الإصدار القياسي لـ Java منذ Java 5 [ 12 ] عبر واجهة برمجة تطبيقات Java لمعالجة XML . من الناحية التقنية ، تُعتبر هذه واجهة برمجة تطبيقات XPath وليست تطبيقًا لـ XPath، وهي تُمكّن المبرمج من اختيار تطبيق مُحدد يتوافق مع الواجهة.javax.xml.xpath

جافا سكريبت

  • الطريقة document.evaluate()[ 13 ] في متصفحات الويب .
  • إضافة jQuery XPath [ 14 ] تعتمد على تطبيق XPath 2.0 مفتوح المصدر في JavaScript [ 15 ]
  • FontoXPath [ 16 ] تطبيق مفتوح المصدر لـ XPath 3.1 مكتوب بلغة JavaScript. قيد التطوير حاليًا.

إطار عمل .NET

  • في مساحات الأسماء System.Xml و System.Xml.XPath [ 17 ]
  • قاعدة بيانات Sedna XML

بيرل

PHP

  • قاعدة بيانات Sedna XML
  • DOMXPath [ 19 ] عبر امتداد libxml

بايثون

روبي

مخطط

  • قاعدة بيانات Sedna XML

SQL

تي سي إل

  • توفر حزمة tDOM تطبيق XPath كامل ومتوافق وسريع في لغة C [ 25 ]

الاستخدام في لغات المخططات

يُستخدم XPath بشكل متزايد للتعبير عن القيود في لغات المخططات الخاصة بـ XML.

  • لغة المخططات (التي أصبحت الآن معيارًا ISO ) Schematron رائدة في هذا النهج.
  • تُستخدم مجموعة فرعية من XPath في W3C XML Schema 1.0 للتعبير عن قيود التفرد والمفاتيح. وفي XSD 1.1، تم توسيع استخدام XPath لدعم تعيين الأنواع المشروط بناءً على قيم السمات، وللسماح بتقييم تأكيدات منطقية عشوائية مقابل محتوى العناصر.
  • يستخدم XForms تقنية XPath لربط الأنواع بالقيم.
  • وقد وجد هذا النهج استخدامًا حتى في التطبيقات غير XML، مثل محلل التعليمات البرمجية المصدرية للغة Java المسمى PMD : يتم تحويل Java إلى شجرة تحليل تشبه DOM ، ثم يتم تعريف قواعد XPath على الشجرة.

انظر أيضاً

ملحوظات

  1. يدعم XPath 2.0 الأنواع الذرية، المعرفة كأنواع مضمنة في مخطط XML ، ويمكنه أيضًا استيراد الأنواع المعرفة من قبل المستخدم من مخطط.
  2. يحتفظ نورمان والش ، خبير لغة XML ،بتصور ممتاز عبر الإنترنت لمحددات المحاور. [ 7 ] ويتضح من الرسم التوضيحي أن العناصر السابقة ، والأصلية ، والذاتية ، والتابعة تشكل تقسيمًا كاملاً ومرتبًا وغير متداخل لشجرة عناصر المستند.
  3. للحصول على وصف كامل، راجع وثيقة توصية W3C .

مراجع

  1. 1 2 "الجدول الزمني لمعايير W3C الخاصة بـ XML والويب الدلالي" (ملف PDF) . 2012-02-04. مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 2013-04-24 . تم الاطلاع عليه بتاريخ 2012-02-04 .
  2. بيرجيرون، راندي (31 أكتوبر 2000). "XPath - استرجاع العقد من مستند XML" . مجلة SQL Server . مؤرشف من الأصل في 26 يوليو 2010. تم الاطلاع عليه في 24 فبراير 2011 .
  3. بيير جينيفيس (2012). "دورة: لغة XPath" (ملف PDF) .
  4. "لغة مسار XML (XPath) 3.0" . اتحاد شبكة الويب العالمية (W3C) . 2014-04-02 . تم الاطلاع عليه بتاريخ 2021-07-16 .
  5. كاي، مايكل (10 فبراير 2012). "ما الجديد في الإصدار 3.0 (XSLT/XPath/XQuery) (بالإضافة إلى XML Schema 1.1)" (ملف PDF) . مؤتمر XML براغ 2012. تاريخ الاسترجاع: 16 يوليو 2021 .
  6. "لغة مسار XML (XPath) 3.1" . اتحاد شبكة الويب العالمية (W3C) . 21-03-2017 . تم الاطلاع عليه بتاريخ 16-07-2021 .
  7. والش، نورمان (1999). "محددات المحور" . nwalsh.com . مدونة شخصية لخبير XML الموقر graybeard . تم الاطلاع بتاريخ 25 فبراير 2021 .
  8. http://www.corefiling.com/opensource/pathan.html
  9. "pugixml.org - الصفحة الرئيسية" . pugixml.org . تم الاطلاع عليه بتاريخ 27-07-2025 .
  10. "XQilla : الصفحة الرئيسية" . مؤرشف من الأصل بتاريخ 18-05-2015 . تم الاطلاع عليه بتاريخ 04-02-2014 . 
  11. "أرشيف كود جوجل - تخزين طويل الأمد لاستضافة مشاريع كود جوجل" . code.google.com . تم الاطلاع عليه بتاريخ 27-07-2025 .
  12. "javax.xml.xpath (Java SE 10 & JDK 10)" . مواصفات واجهة برمجة تطبيقات Java® Platform, Standard Edition & Java Development Kit الإصدار 10. تم الاطلاع عليه بتاريخ 17 يوليو 2021. منذ الإصدار: 1.5
  13. "مستند: دالة evaluate() - واجهات برمجة تطبيقات الويب | MDN" . developer.mozilla.org . تم الاطلاع عليه بتاريخ 17 نوفمبر 2025 .
  14. "GitHub - ilinsky/jquery-xpath: إضافة jQuery XPath (مع دعم كامل للغة XPath 2.0)" . github.com . تم الاطلاع عليه بتاريخ 27-07-2025 .
  15. "GitHub - ilinsky/xpath2.js: xpath.js - تطبيق XPath 2.0 مفتوح المصدر بلغة JavaScript (مستقل عن DOM)" . github.com . تم الاطلاع عليه بتاريخ 27-07-2025 .
  16. "GitHub - FontoXML/fontoxpath: تطبيق XPath 3.1 بسيط مكتوب بلغة JavaScript خالصة" . github.com . تم الاطلاع عليه بتاريخ 27-07-2025 .
  17. "مساحة اسم System.Xml" . وثائق مايكروسوفت . 25-10-2020 . تم الاطلاع عليه بتاريخ 16-07-2021 .
  18. "XML::LibXML - Perl Binding for libxml2 - metacpan.org" . metacpan.org . تم الاطلاع عليه بتاريخ 27-07-2025 .
  19. "PHP: DOMXPath - Manual" . www.php.net . تاريخ الاسترجاع: 27-07-2025 .
  20. "xml.etree.ElementTree — واجهة برمجة تطبيقات ElementTree XML — وثائق بايثون 3.13.5" . docs.python.org . تم الاطلاع عليه بتاريخ 27-07-2025 .
  21. "lxml - معالجة XML و HTML باستخدام بايثون" . lxml.de. تم الاطلاع عليه بتاريخ 27-07-2025 .
  22. ديوك، جاستن (29-09-2016). "كيفية زحف صفحة ويب باستخدام سكراپي وبايثون 3" . ديجيتال أوشن . تم الاسترجاع في 24-11-2017 . المحددات هي أنماط يمكننا استخدامها للعثور على عنصر واحد أو أكثر في الصفحة، حتى نتمكن من العمل مع البيانات الموجودة داخل العنصر. يدعم سكراپي إما محددات CSS أو محددات XPath.
  23. "MySQL :: دليل مرجعي لـ MySQL 5.1 :: 12.11 وظائف XML" . dev.mysql.com . 2016-04-06. مؤرشف من الأصل في 2016-04-06 . تم الاطلاع عليه في 2021-07-17 .  
  24. "xml2" . وثائق PostgreSQL . 24-07-2014 . تم الاطلاع عليه بتاريخ 16-07-2021 .
  25. لوور، يوشين (2000). "tDOM - حزمة XML/DOM/XPath سريعة للغة Tcl مكتوبة بلغة C" (ملف PDF) . وقائع الاجتماع الأوروبي الأول لمستخدمي TCL/Tk . تم الاطلاع عليه بتاريخ 16 يوليو 2021 .