XPath Select Node مع فترات
سؤال
لدي وثيقة XML حيث تحتوي بعض العقد على ملف .
باسمهم:
<com.site.blah>
<id>asdkjasd</id>
<com.site.testing>
<name>test</name>
</com.site.testing>
</com.site.blah>
إذا حاولت @doc.search("/*/id").first.xpath
, ، يعود /com.site.blah/id
, ، ولكن إذا فعلت ذلك: @doc.search("/com.site.blah/id").first.inspect
يعود nil
.
أريد أن أكون قادرًا على إجراء استعلام XPath لتحديد الاسم تحت com.site.testing
, ، لكنه يستمر في رفض استفساراتي.
أيه أفكار؟
(أنا أستخدم hpricot إذا كان يحدث فرقًا)
المحلول
مكتبة XPath الخاصة بك مكسورة. اختبار اسم XPath هو QName (http://www.w3.org/tr/xpath/#nt-nametest) ، والتي ، بعد اتباع ثقب الأرنب في EBNF ، تشمل فترات (http://www.w3.org/tr/rec-xml/#nt-namechar). الإبلاغ عن الخطأ للمطورين.
كحل بديل ، لا يوجد أي من آليات الهروب المذكورة في التعليقات جزء من XPath ، ولكن يمكنك محاولة استخدام مسند للتحقق من اسم العنصر ، مثل ذلك:
/*[name(.) = 'com.site.blah']/id
لا تنتمي إلى StackOverflow