Giriş
Çoğu HTML aracı ağacın üzerinde durur. Aspose.HTML FOSS, Python için bir kat daha ileri gider: CSS nesne modelini uygular, böylece bir stil sayfası yalnızca taşıdığınız bir metin değildir — gerçek bir kaskad içinde yer alır ve her öğe size aslında sahip olduğu stili söyleyebilir.
Bu derin inceleme CSSOM katmanını kapsar: stil sayfalarını CSSStyleSheet ile ayrıştırma, bildirimleri CSSStyleDeclaration aracılığıyla düzenleme ve sonuçları Element.get_computed_style() ile geri okuma — özgüllük, !important ve kalıtımın nasıl etkileştiği dahil. Kütüphane PyPI üzerinde aspose-html-foss olarak bulunur, MIT lisanslıdır ve saf Python (3.10+)dır; bu da başsız bir tarayıcının gereksiz olduğu test paketlerinde ve hizmetlerde stil doğrulaması için pratik olmasını sağlar.
Temel Özellikler
Stil Sayfalarını Ayrıştır ve Bağla
CSSStyleSheet.replace_sync(), stil sayfası metnini yerinde ayrıştırır; Document.attach_style_sheet(), sayfayı belgeye kaydeder, böylece kaskada katılır. Sayfalar ayrıca insert_rule(), add_rule() ve remove_rule() ile kural-kural inşa edilebilir veya from_text() ile metinden oluşturulabilir:
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
Özgüllük Kazananı Belirler
Birden fazla kural aynı öğeyi hedeflediğinde, hesaplanan değer seçici özgüllüğüne göre belirlenir. Bir ID seçicisi (özgüllük 1,0,0), bir sınıf seçicisinden (0,1,0) daha üstündür:
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
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"))
Satır içi Bildirimler ve CSSStyleDeclaration
Her öğenin style özelliği canlı bir CSSStyleDeclaration‘dır. Bildirimler set_property() ile düzenlenir ve get_property_value(), get_property_priority() ve item() ile incelenir. Satır içi bildirimler (1,0,0) özgüllüğüne sahiptir, bu yüzden yazar stil sayfalarındaki tip ve sınıf kurallarını yener:
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))
Önem, Özgüllüğün Üstündedir
!important alışılmış sonucu tersine çevirir: !important olarak işaretlenmiş bir yazar kuralı, özgüllük ne olursa olsun, önemsiz bir satır içi bildirimi yener. Öncelikler ayrıca set_property_priority() ile programlı olarak ayarlanabilir:
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red !important }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))
Kalıtım ve inherit Anahtar Kelimesi
color gibi kalıtılabilir özellikler, çocuk kendi yerel değerine sahip olmadıkça ebeveynden çocuğa akar — yerel bir kural her zaman kalıtılmış bir kuralı geçersiz kılar. Açık inherit anahtar kelimesi ebeveynin hesaplanmış değerini kopyalar ve ebeveyni olmayan bir kök öğede özelliğin başlangıç değerine geri döner:
from aspose_html.dom import Document
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
inline = el.style
inline.set_property("color", "inherit")
print(el.get_computed_style().get_property_value("color"))
Hızlı Başlangıç
Şuradan kurun PyPI:
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Üç yönlü bir çakışmayı çözün — sınıf kuralı vs. ID kuralı vs. satır içi bildirim:
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet
doc = Document()
el = doc.create_element("div")
el.set_attribute("class", "foo")
el.set_attribute("id", "bar")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync(".foo { color: red } #bar { color: green }")
doc.attach_style_sheet(sheet)
inline = el.style
inline.set_property("color", "blue")
print(el.get_computed_style().get_property_value("color"))
Açık Kaynak & Lisanslama
Aspose.HTML FOSS for Python MIT lisansı altında dağıtılır — ticari kullanım, değiştirme ve yeniden dağıtım izin verilir. Kaynak GitHub üzerinde ve sürümler PyPI olarak aspose-html-foss gönderilir.