تقنية

[@role] في ElementTree: هل يستبعد القيمة الفارغة؟

leaf[@role] يعطي bud وleaf في المثال.
وجود يشمل الفراغ.

leaf[@role] يختار الأبناء الموسومين leaf ذوي السمة role، بما فيها القيمة الفارغة. [1]

الخلاصة السريعة

لا؛ الشرط يختبر وجود السمة. [1]

  • leaf[@role] يختار الأبناء الموسومين leaf ذوي السمة role، بما فيها القيمة الفارغة. [1]
  • leaf[@role=''] يختار العناصر ذات القيمة الفارغة، لا السمة الغائبة. [1]
  • على CPython 3.12.14، نصوص العناصر bud وleaf وstone؛ قيم role بالترتيب: فارغة، seed، وغائبة. [1]
  • في المثال، نصوص نتائج شرط الوجود bud وleaf؛ ونتيجة شرط الفراغ بنص bud وحده؛ لا يظهر stone. [1]
  • تحكم: شرط seed يعطي عنصرًا بنص leaf؛ أزواج النص والسمة تطابق قيمًا مستقلة؛ النتائج هي العناصر نفسها، ويبقى المدخل. [1]

وجود السمة

leaf[@role] يختار الأبناء الموسومين leaf ذوي السمة role، بما فيها القيمة الفارغة. [1]

المقارنة بالقيمة

leaf[@role=''] يختار العناصر ذات القيمة الفارغة، لا السمة الغائبة. [1]

ثلاث حالات

على CPython 3.12.14، نصوص العناصر bud وleaf وstone؛ قيم role بالترتيب: فارغة، seed، وغائبة. [1]

import xml.etree.ElementTree as ET raw=("<root><leaf role=''>bud</leaf>" "<leaf role='seed'>leaf</leaf>" "<leaf>stone</leaf></root>") root=ET.fromstring(raw) [1]

leaf[@role=''] يعطي bud وحده هنا.
مساواة تختار الفراغ.

النتائج والتحكم

في المثال، نصوص نتائج شرط الوجود bud وleaf؛ ونتيجة شرط الفراغ بنص bud وحده؛ لا يظهر stone. [1]

for path in ("leaf[@role]","leaf[@role='']", "leaf[@role='seed']"): print([node.text for node in root.findall(path)]) [1]

تحكم: شرط seed يعطي عنصرًا بنص leaf؛ أزواج النص والسمة تطابق قيمًا مستقلة؛ النتائج هي العناصر نفسها، ويبقى المدخل. [1]

المراجع

  1. Python ElementTree

للتوسع: لغات البرمجة.

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