باستخدام XPath للوصول إلى التعليقات هيراتشي مسطحة
-
26-09-2019 - |
سؤال
لدي مستند XML معين (لا يمكن تغيير الهيكل) وأريد الحصول على التعليقات المكتوبة فوق العقد. يبدو المستند هكذا:
<!--Some comment here-->
<attribute name="Title">Book A</attribute>
<attribute name="Author">
<value>Joe Doe</value>
<value>John Miller</value>
</attribute>
<!--Some comment here-->
<attribute name="Code">1</attribute>
لذا فإن التعليقات اختيارية ، ولكن إذا كان هناك واحد ، فأنا أريد الحصول على التعليق أعلاه كل سمة. استخدام /*/comment()[n]
هل تعطيني التعليق n ، لكن بالنسبة لـ n = 2 ، سأحصل بشكل طبيعي على تعليق السمة الثالثة ، لذلك لا يوجد أي صلة بين السمات والتعليقات أي أفكار؟ شكرًا
المحلول
يستخدم:
//comment()[following-sibling::*[1][self::attribute]]
هذا أكثر إحكاما ودقة من الإجابة المحددة حاليًا. ال //
يعد الاختصار ضروريًا ، نظرًا لأنه لم يتم تقديم مستند XML بشكل جيد ولم يكن مستوى التعشيش في عقد التعليق غير معروف.
نصائح أخرى
إذا كنت ترغب في تحديد التعليقات التي يتبعها attribute
العنصر ، ثم هذا يجب أن يعمل:
/*/comment()[following-sibling::*[position()=1 and name()='attribute']]
لا تنتمي إلى StackOverflow