Native rich-text style sheets
De native XHTML-decoder past interne style-elementen toe op rich-text-velden en FDF/XFDF-imports, met behoud van echte berekende styles in opgeslagen RV en embedded widget-appearances
<body xmlns="http://www.w3.org/1999/xhtml">
<style>
.notice { color: #204080; font-size: 14pt }
p > span.urgent { font-weight: bold !important }
</style>
<p class="notice">Review <span class="urgent">today</span></p>
</body>
Style-elementen gebruiken de XHTML-namespace en laten type weg of specificeren text/css; media-attributes en nested @media-groepen gebruiken het expliciete native print/screen-profiel
Regels ondersteunen universal- en type-selectors, case-sensitive class- en ID-namen, compound-selectors, descendant-, child-, adjacent-sibling- en subsequent-sibling-combinators en kommagescheiden selector-groepen
Namespace-selectors
CSS namespace-declaraties en gekwalificeerde selectors ondersteunen benoemde en default namespace-URI's, wildcard- of lege qualifiers, onafhankelijke XML-prefix-scopes en begrensde geërfde attribute-opzoek
Attribute- en structurele selectors
Attribute-selectors ondersteunen aanwezigheid, gelijkheid, whitespace-gescheiden woorden, koppelteken-prefixes, gewone prefixes, suffixes en substrings: [name], [name="value"], [name~="word"], [name|="en"], [name^="pre"], [name$="end"] en [name*="part"]
Attribute-waarden accepteren geqoutete strings of CSS-identifiers met diens escapes; de optionele i-vlag vouwt alleen ASCII-letters samen, terwijl s en een weggelaten vlag case-sensitief vergelijken
Ongeprefixeerde attributes en [|name] matchen attributes zonder namespace-URI; [*|name] matcht ook geprefixeerde attributes met die lokale naam, exclusief namespace-declaraties
Sibling-combinators slaan niet-element-nodes over en behouden ancestor-matching door geketende selectors heen
Structurele pseudo classes omvatten :root, :empty, :first-child, :last-child, :only-child, :first-of-type, :last-of-type en :only-of-type
De vier positionele selectors :nth-child(), :nth-last-child(), :nth-of-type() en :nth-last-of-type() accepteren odd, even, integer-posities en An+B-formules met getekende decimale coëfficiënten voorbij machine-integer-bereiken, binnen het geconfigureerde scanbudget
Type-posities vergelijken zowel de lokale elementnaam als de namespace-URI; de :empty-regel volgt Selectors3, dus een whitespace-tekstnode maakt een element niet-leeg terwijl comments en processing instructions dat niet doen
:lang() volgt de dichtstbijzijnde expliciete xml:lang- of lang-waarde, matcht ASCII-insensitief op exacte waarde of koppelteken-prefix en behandelt een expliciet lege waarde als inheritance-stop
Logische en relationele selector-lijsten
:is() en :where() accepteren kommagescheiden complexe selectors, inclusief descendant- en sibling-combinators; niet-ondersteunde branches worden genegeerd en een lege geldige lijst matcht geen enkel element
:is() gebruikt de grootste argument-specificity, inclusief geldige argumenten die niet op het huidige element matchen; :where() levert nul specificity
:not() accepteert een niet-lege lijst van complexe selectors en matcht wanneer geen van diens argumenten matcht; een ongeldig argument invalideert de complete selector-lijst
:has() anker relatieve selectors op het huidige element en test echte kinderen, afstammelingen of daaropvolgende siblings; elk relatief argument mag beginnen met >, + of ~, gevolgd door verdere ondersteunde combinators
Nested :has() en pseudo-elementen worden niet ondersteund; een ongeldig relatief argument invalideert de complete :has()-lijst, terwijl een omvattende forgiving :is()- of :where()-lijst diens andere geldige argumenten kan behouden
:not() en :has() gebruiken de grootste geldige argument-specificity, vergeleken op ID-aantal, class/attribute/pseudo-aantal en type-aantal
:nth-child(An+B of selector-list) en :nth-last-child(An+B of selector-list) tellen alleen element-siblings die matchen met de vereniging van de niet-lege complexe selector-lijst; de target moet zelf tot die vereniging behoren
Gefilterde positionele selectors dragen diens eigen pseudo-class-specificity plus de grootste filter-specificity bij; het of-keyword accepteert CSS identifier-escapes en comment-grenzen, terwijl :nth-of-type() en :nth-last-of-type() diens ongefilterde grammatica houden
p:has(> span.urgent) { color: red }
span:is(.notice, p > .urgent) { font-weight: bold }
span:nth-child(2 of .included, [data-status="ready"]) { color: blue }
CSS-comments en identifier-escapes worden geparsd vóór matching, inclusief één-tot-zes-hexadecimale-cijfers, optionele afsluitende CSS-whitespace en supplementary Unicode-scalars; nul-, surrogate- en out-of-range-hexadecimale-escapes resolven naar U+FFFD
Declaraties cascaden op importance, selector-specificity en documentbronvolgorde, gevolgd door inline styles op diens bijbehorende importance; elementen erven berekende ouders-waarden via de bestaande property-specifieke regels
Alle interne style-elementen doen mee voordat tekst wordt geconsumeerd, dus een style-element dat na diens target verschijnt geldt nog steeds; style-tekst wordt geen zichtbare veldtekst
Het declaratieprofiel behoudt fontgrootte, weight, stijl en shorthand, geconfigureerde family-lijsten, kleur, tekstdecoratie, uitlijning, regelhoogte en letter-/woordspacing; lengteconversie, ouder-metric-struts en supplied font-admission volgen de bestaande native rich-text-API's
Opgeslagen RV bevat berekende inline styles en hangt niet af van de originele style-elementen; herhaalde equivalente FDF/XFDF-imports behouden exacte gecommitte bytes wanneer geen pending graafwijzigingen publicatie vragen
Native Pascal-consumers, Windows file-jobs en originele V1-callbacks, en Linux JSON/V1-callbacks delen de decoder; er zijn geen wijzigingen in publieke callback-record-layouts nodig
MaxTotalCodeUnits klemt stylesheet-scanning, geëxtraheerde style-tekst en geaggregeerde uitgeklapte declaraties af; MaxNodes klemt regel-aantal, selector-namen, geaggregeerde attribute/pseudo-condities, functionele selector-lijsten en matching/sorteerwerk af, inclusief relatieve traversal en gefilterde sibling-scans; MaxDepth klemt XML-collectie, selector-delen, nested functies en recursieve matching af
Annulerings- en limietfalen behouden de eerdere uitvoer van de decoder en de gecommitte documentstatus van de import-transactie; retry gebruikt dezelfde originele options en budgetten
Ongeldige of niet-ondersteunde top-level selector-groepen worden als geheel genegeerd; forgiving is/where-argumentlijsten behouden diens geldige branches; ongeldige declaraties behouden het bestaande negeergedrag van de decoder, en niet-ondersteunde at-rules worden overgeslagen
Externe style sheets, verdere media-features, pseudo-elementen, extra state- en scope-pseudo classes, tabellen, afbeeldingen en algemene CSS-layout blijven actief werk
Native form-data interchange · Linux rich callbacks · Windows form-data exchange · Rich run spacing