XPath 2.0

XPath 2.0 هو إصدار من لغة XPath تم تعريفه بواسطة اتحاد شبكة الويب العالمية (W3C). وقد أصبح توصية في 23 يناير 2007. [ 1 ] وبصفته توصية من W3C، فقد تم استبداله بـ XPath 3.0 في 10 أبريل 2014.

تُستخدم لغة XPath بشكل أساسي لاختيار أجزاء من مستند XML . ولهذا الغرض، يُصمم مستند XML على شكل شجرة من العقد. وتتيح XPath اختيار العقد من خلال مسار تنقل هرمي عبر شجرة المستند.

تُعدّ هذه اللغة أكبر بكثير من سابقتها، XPath 1.0 ، وقد طرأت تغييرات على بعض المفاهيم الأساسية مثل نموذج البيانات ونظام الأنواع. ولذلك، سيتم شرح نسختي اللغة في مقالتين منفصلتين.

تُستخدم XPath 2.0 كلغة فرعية من XSLT 2.0 ، وهي أيضًا مجموعة فرعية من XQuery 1.0. تشترك اللغات الثلاث في نفس نموذج البيانات ( XDM ) ونظام الأنواع ومكتبة الوظائف، وقد تم تطويرها معًا ونشرها في نفس اليوم.

نموذج البيانات

كل قيمة في XPath 2.0 عبارة عن سلسلة من العناصر . قد تكون هذه العناصر عُقدًا أو قيمًا ذرية . تُعتبر كل عُقدة أو قيمة ذرية سلسلةً طولها واحد. لا يمكن أن تكون السلاسل متداخلة.

تتكون العُقد من سبعة أنواع، تُقابل بنيات مختلفة في بنية XML : العناصر، والسمات، وعُقد النصوص، والتعليقات، وتعليمات المعالجة، وعُقد مساحات الأسماء، وعُقد المستندات. (تحل عُقدة المستند محل العقدة الجذرية في XPath 1.0 ، لأن نموذج XPath 2.0 يسمح بتجذير الأشجار عند أنواع أخرى من العُقد، ولا سيما العناصر).

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

قد تنتمي القيم الذرية إلى أي من الأنواع الأولية التسعة عشر المحددة في مواصفات مخطط XML (على سبيل المثال، سلسلة نصية، منطقية، مزدوجة، عشرية، تاريخ ووقت، اسم مؤهل، وما إلى ذلك). كما قد تنتمي إلى نوع مشتق من أحد هذه الأنواع الأولية: إما نوع مشتق مدمج مثل عدد صحيح أو اسم، أو نوع مشتق معرف من قبل المستخدم في مخطط كتبه المستخدم.

نظام الكتابة

التسلسل الهرمي لأنواع XDM

يتميز نظام أنواع XPath 2.0 بأنه يجمع بين الكتابة القوية والكتابة الضعيفة ضمن لغة واحدة.

تتطلب عمليات مثل العمليات الحسابية والمقارنة المنطقية قيمًا ذرية كمعاملات. إذا أعاد أحد المعاملات عقدة (على سبيل المثال، )، فسيتم تحويل@price * 1.2 العقدة تلقائيًا إلى قيمة ذرية لاستخراج القيمة الذرية. إذا تم التحقق من صحة مستند الإدخال وفقًا لمخطط، فستحتوي العقدة عادةً على تعليق نوع، وهذا يحدد نوع القيمة الذرية الناتجة (في هذا المثال، قد يكون نوع السمة ). إذا لم يتم استخدام أي مخطط، فستكون العقدة غير محددة النوع، وسيكون نوع القيمة الذرية الناتجة . يتم فحص القيم الذرية المحددة النوع للتأكد من أنها من النوع المناسب للسياق الذي تُستخدم فيه: على سبيل المثال، لا يمكن ضرب تاريخ في رقم. على النقيض من ذلك، تتبع القيم الذرية غير المحددة النوع نظامًا ضعيفًا لتحديد النوع: يتم تحويلها تلقائيًا إلى نوع مناسب للعملية التي تُستخدم فيها: على سبيل المثال، مع عملية حسابية، يتم تحويل القيمة الذرية غير المحددة النوع إلى النوع .pricedecimaluntypedAtomicdouble

تعبيرات المسار

تُعرف مسارات الموقع في XPath 1.0 في XPath 2.0 باسم تعبيرات المسار . ببساطة ، تعبير المسار هو سلسلة من الخطوات مفصولة بمعامل " /"، على سبيل المثال a/b/c(وهو اختصار لـ child::a/child::b/child::c). ولكن بشكل أكثر دقة، فإن " /" هو ببساطة معامل ثنائي يُطبق التعبير الموجود على جانبه الأيمن على كل عنصر يتم تحديده بدوره بواسطة التعبير الموجود على الجانب الأيسر. لذا في هذا المثال، aيحدد التعبير جميع العناصر الفرعية لعقدة السياق المسماة ؛ ثم يُطبق التعبير على كل عقدة من هذه العقد، مما يحدد جميع العناصر الفرعية للعناصر ؛ ثم يُطبق التعبير على كل عقدة في هذه السلسلة، مما يحدد جميع العناصر الفرعية لهذه العناصر.<a>child::b<b><a>child::c<c><b>

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

في كثير من الحالات، ستكون معاملات " /" عبارة عن خطوات محورية: لم تتغير هذه الخطوات إلى حد كبير عن XPath 1.0، وهي موصوفة في المقالة الخاصة بـ XPath 1.0 .

مشغلون آخرون

تتضمن عوامل التشغيل الأخرى المتاحة في XPath 2.0 ما يلي:

المشغلونتأثير
+، -، *، div، mod، idivالعمليات الحسابية على الأرقام والتواريخ والمدد الزمنية
=,  !=, < , > , < =, > =مقارنة عامة: قارن بين أي متتابعتين. تكون النتيجة صحيحة إذا كان أي زوج من العناصر، عنصر واحد من كل متتابعة، يحقق المقارنة.
eq, ne, lt, gt, le, geمقارنة القيمة: قارن بين العناصر الفردية
يكونمقارنة هوية العقدة: صحيح إذا كان كلا المعاملين هما نفس العقدة
< < , > >قارن موضع العقدة، بناءً على ترتيب المستند
الاتحاد، التقاطع، باستثناءقارن بين تسلسلات العقد، مع التعامل معها كمجموعات، وأرجع اتحاد المجموعة أو تقاطعها أو فرقها
و/أوالربط والفصل المنطقيان. ويتم تحقيق النفي باستخدام not()الدالة.
ليُحدد نطاقًا للأعداد الصحيحة، على سبيل المثال1 to 10
مثال علىيحدد ما إذا كانت القيمة تمثل مثالاً لنوع معين
تم اختياره كـيحوّل قيمة إلى نوع معين
يمكن اختياره كـيختبر ما إذا كانت القيمة قابلة للتحويل إلى نوع معين

يمكن كتابة التعبيرات الشرطية باستخدام الصيغة التالية if (A) then B else C.

يُقدّم XPath 2.0 أيضًا forتعبيرًا، وهو مجموعة فرعية صغيرة من تعبير FLWOR من XQuery . يُقيّم هذا التعبير التعبير لكل قيمة في نتيجة التعبير بدوره، ويشير إلى تلك القيمة باستخدام مرجع المتغير .for$xinXreturnYYX$x

مكتبة الوظائف

تم توسيع مكتبة الدوال في XPath 2.0 بشكل كبير مقارنةً بمكتبة الدوال في XPath 1.0. ( العناصر المكتوبة بخط غامق متوفرة في XPath 1.0)

تشمل الوظائف المتاحة ما يلي:

غايةأمثلة على الدوال
معالجة السلاسل النصية العامةأحرف صغيرة، أحرف كبيرة، سلسلة فرعية ، سلسلة فرعية قبل ، سلسلة فرعية بعد ، ترجمة ، يبدأ بـ ، ينتهي بـ، يحتوي على ، طول السلسلة ، دمج ، توحيد المسافة ، توحيد يونيكود
التعبيرات النمطيةمطابقة، استبدال، تقسيم إلى رموز
الحسابالعد ، المجموع ، المتوسط، الحد الأدنى، الحد الأقصى، التقريب، التقريب إلى أقرب عدد صحيح أصغر ، التقريب إلى أقرب عدد صحيح أكبر ، القيمة المطلقة
التواريخ والأوقاتضبط التاريخ والوقت حسب المنطقة الزمنية، التاريخ والوقت الحالي، اليوم من التاريخ والوقت، الشهر من التاريخ والوقت، الأيام من المدة، الأشهر من المدة، إلخ.
خصائص العقدالاسم ، اسم العقدة، الاسم المحلي ، عنوان URI للمساحة الاسمية ، عنوان URI الأساسي، فارغ
معالجة المستنداتdoc، doc-available، document-uri، collection، id ، idref
معرّفات الموارد الموحدة (URIs)encode-for-uri, escape-html-uri, iri-to-uri, resolve-uri
أسماء QQName، مساحة الاسم-uri-من-QName، البادئة-من-QName، حل-QName
التسلسلاتإدراج قبل، حذف، تسلسل فرعي، فهرسة، قيم مميزة، عكس، غير مرتب، فارغ، موجود
التدقيق الإملائيواحد أو أكثر، واحد بالضبط، صفر أو واحد

التوافق مع الإصدارات السابقة

بسبب التغييرات في نموذج البيانات ونظام الأنواع، لا يكون لجميع التعبيرات نفس التأثير تمامًا في XPath 2.0 كما في 1.0. الفرق الرئيسي هو أن XPath 1.0 كان أكثر مرونة فيما يتعلق بتحويل الأنواع، فعلى سبيل المثال، كان من الممكن مقارنة سلسلتين نصيتين ( ) ولكن ذلك كان يُجري مقارنة رقمية؛ أما في XPath 2.0، فقد تم تعريف ذلك لمقارنة القيمتين كسلاسل نصية باستخدام تسلسل ترتيب مُحدد حسب السياق."4" > "4.0"

لتسهيل عملية الانتقال، يُعرّف XPath 2.0 نمط تنفيذ يتم فيه تعديل الدلالات لتكون أقرب ما يمكن إلى سلوك XPath 1.0. عند استخدام XSLT 2.0 ، يتم تفعيل هذا النمط بتعيين version="1.0"سمة للعنصر xsl:stylesheet. مع ذلك، لا يزال هذا لا يوفر توافقًا تامًا، ولكن من المرجح أن تظهر أي اختلافات متبقية في حالات نادرة فقط.

يدعم

لا يزال دعم XPath 2.0 محدودًا.

مراجع

  1. "الجدول الزمني لمعايير W3C الخاصة بـ XML والويب الدلالي" (ملف PDF) . 4 فبراير 2012. مؤرشف من الأصل (ملف PDF) في 24 أبريل 2013. تم الاطلاع عليه في 4 فبراير 2012 .