Native Rich-Text-CSS-Namespaces

Interne XHTML-Style-Sheets unterstützen CSS-Namespace-Deklarationen und qualifizierte Element- und Attribut-Selektoren über den bestehenden nativen Rich-Text-Decoder

<body xmlns="http://www.w3.org/1999/xhtml" xmlns:meta="urn:review">
  <style>
    @namespace h "http://www.w3.org/1999/xhtml";
    @namespace review "urn:review";
    h|span[review|status="ready"] { color: #204080; font-weight: bold }
  </style>
  <p><span meta:status="ready">Approved</span></p>
</body>

CSS-Präfixe identifizieren Namespace-URIs unabhängig von XML-Präfixen, sodass review|status im Beispiel meta:status matcht, weil beide Präfixe zu urn:review auflösen

Präfixnamen sind case-sensitive und akzeptieren gewöhnliche CSS-Identifier-Escapes; Namespace-URI-Werte akzeptieren quoted Strings sowie quoted oder unquoted url()-Syntax

Kommentare innerhalb eines unquoted url-Tokens bleiben literale URI-Zeichen; Whitespace um den unquoted URI wird aus dem Wert ausgeschlossen

Die letzte gültige Deklaration für ein Präfix gewinnt innerhalb ihres Style-Elements; die letzte Default-Deklaration gewinnt unabhängig, und Bindings leaken nicht in ein anderes Style-Element

Deklarationen vor Style-Regeln und erkannten Nicht-Import-At-Rules platzieren; eine unbekannte, ignorierte At-Rule schließt die Deklarationsregion nicht

Qualifizierte Namen und Default-Namespaces

h|span matcht einen lokalen span-Namen im für h deklarierten URI, *|span akzeptiert jeden Namespace, und |span verlangt keinen Namespace

h|* matcht jeden Elementnamen im deklarierten URI; der Decoder konsumiert weiterhin das bestehende unterstützte XHTML-Element-Profil

Eine Default-Deklaration wie @namespace "urn:review"; beschränkt unqualifizierte Element-Selektoren und gewöhnliche Compounds mit implizitem Universal-Selektor

Ein leerer Default-URI wählt Elemente ohne Namespace; der literale URI "*" ist ein gewöhnlicher URI und unterscheidet sich vom Wildcard-Präfix in *|span

Attribut-Selektoren unterstützen deklarierte Präfixe, Wildcard-Präfixe und explizite leere Präfixe; unpräfixierte Attribute bleiben ohne Namespace, unabhängig vom Default-Element-Namespace

XML-Namespace-Deklarationen zählen nicht als gewöhnliche Attribute; die Namespace-Auflösung folgt dem Element-Scope des Attributs selbst und respektiert lokales Präfix-Shadowing, einschließlich des eingebauten xml-Präfixes

Funktionale Selektoren

Das Subject-Compound innerhalb von :is(), :where() und :not() lässt die Default-Namespace-Beschränkung weg, wenn es keinen expliziten Type- oder Universal-Selektor hat

Ein expliziter Universal-Selektor behält diese Beschränkung; frühere Ancestor-Compounds, relative :has()-Argumente und of-Filter in Positions-Selektoren behalten gewöhnliches Namespace-Matching

Ein undeklariertes CSS-Präfix invalidiert seinen Selektor; forgiving is/where-Listen können andere gültige Zweige behalten, während strikte Selektorgruppen ihre bestehenden Whole-Group-Invalidierungsregeln behalten

Gespeicherte Ausgabe und Ressourcenlimits

Berechnete Styles fließen über native Pascal, Windows-Jobs und V1-Callbacks sowie Linux-JSON- und V1-Callbacks in gespeicherte RV- und echte Widget-Appearances

Bestehende Importance-, Specificity-, Source-Ordering- und Property-Inheritance-Regeln gelten nach dem Namespace-Matching weiter

Namespace-Deklarations-Speicherung teilt MaxNodes, Namespace-Scanning teilt MaxTotalCodeUnits, und geerbtes Attribut-Namespace-Lookup belastet begrenztes Matching und Scan-Arbeit

Abbruch- und Budget-Fehler bewahren die frühere Decoder-Ausgabe und den committed Import-State; Aufrufer können mit der Original-Eingabe und normalen Limits erneut versuchen

Externe Style-Sheets, bedingte Media-Regeln, zusätzliche State-Pseudo-Classes und explizite Scoping-Roots, Tabellen und allgemeines CSS-Layout bleiben aktive Arbeiten

Native Rich-Text-Style-Sheets · Native Form-Data-Interchange