Hoe te werken met CSS selectors in Python

Hoe te werken met CSS selectors in Python

De selectorengine in Aspose.HTML FOSS voor Python evalueert klasse-, id-, type-, attribuut- en pseudo-klasse-selectoren met standaard specificiteit. Deze gids demonstreert selectormatching via de cascade — dezelfde engine die select() en element_matches() aandrijft — met pip voor installatie.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

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

Stap 2: Importeer vereiste klassen

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

Stap 3: Maak een element dat overeenkomt met meerdere selectoren

Een element dat zowel een class als een id bevat, wordt tegelijkertijd gematcht door de selectors .foo, #bar en div:

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

Stap 4: Laat specificiteit beslissen

Voeg concurrerende regels toe — de ID-selector (1,0,0) verslaat de class-selector (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"))

Stap 5: Overschrijf met een inline declaratie

Inline-declaraties hebben een prioriteit van (1,0,0) op inline-niveau en verslaan auteursregels van welke selector-specificiteit dan ook:

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

Veelvoorkomende problemen en oplossingen

Een selector die er correct uitziet, matcht niets. Selector-tekst met syntaxisfouten faalt bij het parseren — de engine meldt het in plaats van te raden; controleer de selector-string.

:where() gedraagt zich anders dan :is(). Dat is zo bedoeld: :where() draagt nul specificiteit bij, :is() draagt die van zijn argument bij.

Een type-selector verliest onverwacht. Type-selectors hebben de laagste specificiteitsklasse (0,0,1); elke class- of id-regel op hetzelfde element heeft een hogere prioriteit.

Veelgestelde vragen

Kan ik een selector-query uitvoeren zonder stylesheet?

Ja — select() evalueert een selector direct tegen een boom, en element_matches() test een enkel element.

Hoe wordt specificiteit berekend?

specificity() retourneert de standaard (id, class, type)-tuple die zowel door queries als door de cascade wordt gebruikt.

Welke pseudo-klassen worden gemodelleerd?

Gestructureerde formulieren bestaan voor :is(), :where(), :has(), :not() met complexe argumenten en nth-child-stijl structurele selectors.

Zie ook

 Nederlands