Namespaces CSS em rich text nativo

Folhas de estilo XHTML internas suportam declarações CSS de namespaces e selectors qualificados de elementos e atributos através do decoder nativo existente de rich text

<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>

Prefixes CSS identificam namespace URIs independentemente dos prefixes XML, então review|status no exemplo corresponde a meta:status porque ambos os prefixes resolvem para urn:review

Nomes de prefixes são sensíveis a maiúsculas e minúsculas e aceitam escapes comuns de identificadores CSS; valores de namespace URIs aceitam strings entre aspas e sintaxe url() com ou sem aspas

Comentários dentro de um token url sem aspas permanecem caracteres literais de URI; whitespace ao redor do URI sem aspas é excluído do valor

A última declaração válida de um prefixo vence dentro do seu elemento style; a última declaração default vence de forma independente, e bindings não vazam para outro elemento style

Coloque declarações antes de regras de estilo e at-rules reconhecidos que não sejam import; um at-rule desconhecido e ignorado não fecha a região de declarações

Nomes qualificados e namespaces default

h|span corresponde a um nome local span no URI declarado para h, *|span aceita qualquer namespace, e |span exige ausência de namespace

h|* corresponde a qualquer nome de elemento no URI declarado; o decoder continua consumindo o perfil existente suportado de elementos XHTML

Uma declaração default como @namespace "urn:review"; restringe selectors de elementos não qualificados e compounds comuns com um selector universal implícito

Um URI default vazio seleciona elementos sem namespace; o URI literal "*" é um URI comum e é distinto do prefixo wildcard em *|span

Selectors de atributos suportam prefixes declarados, prefixes wildcard e prefixes explicitamente vazios; atributos sem prefixo permanecem sem namespace, independentemente do namespace default de elementos

Declarações de namespaces XML não contam como atributos comuns; a resolução de namespaces segue o escopo do próprio elemento do atributo e respeita shadowing local de prefixes, incluindo o prefixo xml built-in

Selectors funcionais

O compound sujeito dentro de :is(), :where() e :not() omite a restrição de namespace default quando não tem selector de tipo ou universal explícito

Um selector universal explícito retém essa restrição; compounds de ancestrais anteriores, arguments relativos de :has() e filtros of em selectors posicionais retêm o matching comum de namespaces

Um prefixo CSS não declarado invalida seu selector; listas forgiving is/where podem reter outros ramos válidos, enquanto grupos estritos de selectors retêm suas regras existentes de invalidação do grupo inteiro

Saída salva e limites de recursos

Estilos computados alimentam o RV salvo e as aparências reais de widgets através dos callbacks V1 nativos de Pascal, jobs do Windows e do Linux JSON e V1

As regras existentes de importance, especificidade, ordenação de origem e herança de propriedades continuam se aplicando após o matching de namespaces

O armazenamento de declarações de namespaces compartilha MaxNodes, o scanning de namespaces compartilha MaxTotalCodeUnits, e o lookup herdado de namespaces de atributos cobra trabalho delimitado de matching e scanning

Cancelamento e falhas de orçamento preservam a saída anterior do decoder e o estado commitado do import; os chamadores podem tentar de novo com a entrada original e os limites normais

Folhas de estilo externas, media rules condicionais, pseudo classes mais amplas de estado e escopo, tabelas e layout CSS geral permanecem trabalho ativo

Folhas de estilo nativas de rich text · Interchange nativo de form data