كيفية العمل مع CSS Selectors في Python

كيفية العمل مع CSS Selectors في Python

محرك المحددات في Aspose.HTML FOSS لـ Python يقيّم محددات الفئة، المعرف، النوع، السمة، ومحددات الفئة الزائفة وفقًا لخصوصية المعايير. يوضح هذا الدليل مطابقة المحددات عبر السلسلة — نفس المحرك الذي يمدّ select() وelement_matches() — باستخدام pip للتثبيت.

دليل خطوة بخطوة

الخطوة 1: تثبيت الحزمة

git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .

الخطوة 2: استيراد الفئات المطلوبة

from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet

الخطوة 3: إنشاء عنصر يطابقه عدة محددات

العنصر الذي يحمل كلًا من الفئة (class) والمعرف (id) يتم مطابقةه بواسطة محددات .foo و#bar وdiv في آنٍ واحد:

doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)

الخطوة 4: دع التحديد يقرر

أرفق القواعد المتنافسة — محدد الـ ID (1,0,0) يتفوق على محدد الفئة (0,1,0):

sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: blue }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))

الخطوة 5: تجاوز باستخدام إعلان مضمّن

الإعلانات المضمّنة تحمل أولوية (1,0,0) على مستوى السطر وتتفوق على قواعد المؤلف مهما كانت تحديدات المُحدد.

inline = el.style
inline.set_property("color", "green")
print(el.get_computed_style().get_property_value("color"))

المشكلات الشائعة والحلول

المحدد الذي يبدو صحيحًا لا يطابق شيئًا. نص المحدد الذي يحتوي على أخطاء في الصياغة يفشل في التحليل — المحرك يُبلّغ عن ذلك بدلاً من التخمين؛ تحقق من سلسلة المحدد.

:where() يتصرف بشكل مختلف عن :is(). هذا مقصود في التصميم: :where() يساهم بصفر خصوصية، :is() يساهم بخصوصية حججه.

محدد النوع يخسر بشكل غير متوقع. محددو النوع لديهم أدنى فئة خصوصية (0,0,1)؛ أي قاعدة فئة أو معرف على نفس العنصر تتفوق عليهم.

الأسئلة المتكررة

هل يمكنني تشغيل استعلام محدد بدون ورقة أنماط؟

نعم — select() يقيّم محددًا ضد شجرة مباشرة، وelement_matches() يختبر عنصرًا واحدًا.

كيف يتم حساب التحديد؟

specificity() تُرجع الثلاثية القياسية (المعرف، الفئة، النوع) المستخدمة في كل من الاستعلامات والسلسلة.

ما هي الفئات الزائفة التي تم نمذجتها؟

توجد نماذج منظمة لـ :is()، :where()، :has()، :not() مع وسائط معقدة، ومحددات بنيوية بنمط nth-child.

انظر أيضاً

 العربية