परिचय
अधिकांश HTML टूलिंग पेड़ पर ही रुक जाती है। Aspose.HTML FOSS Python के लिए एक परत आगे जाता है: यह CSS ऑब्जेक्ट मॉडल को लागू करता है, इसलिए एक स्टाइलशीट केवल वह टेक्स्ट नहीं है जिसे आप लेकर चलते हैं — यह वास्तविक कास्केड में भाग लेती है, और प्रत्येक तत्व आपको वह शैली बता सकता है जो वास्तव में उसके पास आती है।
यह गहरी जाँच CSSOM लेयर को कवर करती है: CSSStyleSheet के साथ स्टाइलशीट्स का पार्सिंग, CSSStyleDeclaration के माध्यम से घोषणाओं का संपादन, और Element.get_computed_style() के साथ परिणामों को पढ़ना — जिसमें विशिष्टता, !important, और विरासत कैसे इंटरैक्ट करती है। लाइब्रेरी PyPI पर aspose-html-foss के रूप में उपलब्ध है, MIT लाइसेंस वाली, और शुद्ध Python (3.10+) है, जो इसे टेस्ट सूइट्स और सेवाओं में शैली सत्यापन के लिए व्यावहारिक बनाती है जहाँ हेडलेस ब्राउज़र की आवश्यकता अत्यधिक होगी।
मुख्य विशेषताएँ
स्टाइलशीट्स को पार्स और संलग्न करें
CSSStyleSheet.replace_sync() स्थान पर स्टाइलशीट टेक्स्ट को पार्स करता है; Document.attach_style_sheet() शीट को दस्तावेज़ के साथ रजिस्टर करता है ताकि वह कास्केड में भाग ले सके। शीट्स को insert_rule(), add_rule(), और remove_rule() के साथ नियम-दर-नियम बनाया भी जा सकता है, या टेक्स्ट से from_text() के साथ बनाया जा सकता है:
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)
विशिष्टता तय करती है विजेता को
जब कई नियम एक ही तत्व को लक्षित करते हैं, तो गणना किया गया मान चयनकर्ता विशिष्टता का पालन करता है। एक ID चयनकर्ता (विशिष्टता 1,0,0) एक वर्ग चयनकर्ता (0,1,0) से अधिक प्राथमिकता रखता है:
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"))
इनलाइन घोषणा और CSSStyleDeclaration
प्रत्येक तत्व की style प्रॉपर्टी एक लाइव CSSStyleDeclaration है। घोषणाओं को set_property() के साथ संपादित किया जाता है और get_property_value(), get_property_priority(), और item() के साथ निरीक्षण किया जाता है। इनलाइन घोषणाओं की (1,0,0) विशिष्टता होती है, इसलिए वे लेखक स्टाइलशीट्स के टाइप और क्लास नियमों को मात देती हैं:
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"))
महत्व विशिष्टता से आगे है
!important सामान्य परिणाम को उलट देता है: एक लेखक नियम जिसे !important चिह्नित किया गया है, गैर-महत्वपूर्ण इनलाइन घोषणा को, विशिष्टता की परवाह किए बिना, मात देता है। प्राथमिकताएँ प्रोग्रामेटिक रूप से set_property_priority() के साथ भी सेट की जा सकती हैं:
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"))
विरासत और inherit कीवर्ड
विरासत योग्य प्रॉपर्टीज़ जैसे color पैरेंट से चाइल्ड में प्रवाहित होती हैं, जब तक कि चाइल्ड के पास अपना स्थानीय मान न हो — एक स्थानीय नियम हमेशा विरासत में मिली प्रॉपर्टी को ओवरराइड करता है। स्पष्ट inherit कीवर्ड पैरेंट के गणना किए गए मान की कॉपी बनाता है, और बिना पैरेंट वाले रूट तत्व पर यह प्रॉपर्टी के शुरुआती मान पर वापस आ जाता है:
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"))
त्वरित प्रारंभ
इंस्टॉल PyPI से:
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .तीन-तरफ़ा संघर्ष को हल करें — क्लास नियम बनाम ID नियम बनाम इनलाइन घोषणा:
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"))
ओपन सोर्स & लाइसेंसिंग
Aspose.HTML FOSS Python के लिए MIT लाइसेंस के तहत वितरित किया गया है — व्यावसायिक उपयोग, परिवर्तन, और पुनर्वितरण की अनुमति है। स्रोत GitHub पर है और रिलीज़ PyPI को aspose-html-foss के रूप में शिप की जाती हैं।