libwordring
公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
wordring::wwwc::css::attribute_selector クラス

<attribute-selector> [詳解]

#include <grammar.hpp>

wordring::wwwc::css::attribute_selector の継承関係図
wordring::wwwc::css::selector_grammar

公開型

using const_iterator = syntax_primitive_stream::const_iterator
 
- 基底クラス wordring::wwwc::css::selector_grammar に属する継承公開型
using const_iterator = syntax_primitive_stream::const_iterator
 
using document_type_name = wordring::html::document_type_name
 
using document_mode_name = wordring::html::document_mode_name
 

公開メンバ関数

 attribute_selector (const_iterator first, const_iterator last, wq_name name, char32_t matcher, std::u32string const &value, char32_t modifier)
 
std::optional< ns_prefix > const & prefix () const
 
std::u32string const & name () const
 
char32_t matcher () const
 
std::u32string const & value () const
 
char32_t modifier () const
 
template<typename NodePointer >
bool match (NodePointer const &np, match_context< NodePointer > const &ctx) const
 ノードにマッチするか検査する [詳解]
 
- 基底クラス wordring::wwwc::css::selector_grammar に属する継承公開メンバ関数
 selector_grammar (selector_grammar const &)=default
 
 selector_grammar (selector_grammar &&)=default
 
 selector_grammar (const_iterator first, const_iterator last)
 
selector_grammaroperator= (selector_grammar const &)=default
 
selector_grammaroperator= (selector_grammar &&)=default
 
 operator bool () const
 
bool operator! () const
 
const_iterator begin () const
 
const_iterator end () const
 

静的公開メンバ関数

static attribute_selector consume (syntax_primitive_stream in, parse_context &ctx)
 

その他の継承メンバ

- 基底クラス wordring::wwwc::css::selector_grammar に属する継承限定公開変数類
const_iterator m_first
 構文解析時に部分セレクタが消費した入力の先頭
 
const_iterator m_last
 構文解析時に部分セレクタが消費した入力の終端
 

詳解

<attribute-selector>

<attribute-selector> = '[' <wq-name> ']' |
'[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'
参照
selector_list
https://drafts.csswg.org/selectors-4/#typedef-attribute-selector
https://triple-underscore.github.io/selectors4-ja.html#typedef-attribute-selector

関数詳解

◆ match()

template<typename NodePointer >
bool wordring::wwwc::css::attribute_selector::match ( NodePointer const &  np,
match_context< NodePointer > const &  ctx 
) const
inline

ノードにマッチするか検査する

名前空間をサポートしないcontextで、名前空間を指定したセレクタは無効なセレクタとなり何にもマッチしない。

参照
id_selector::match()

同一要素内で属性名の重複は、HTML5はトークン化ステージで後ろの属性が捨てられ、XMLはエラーとなる。 したがって、属性名の重複は考慮しなくて良い。

HTML 下では、要素名属性名はASCII大小無視で照合される。 XML 下では、要素名属性名はASCII大小区別される。 HTML5 パーサーはトークン化ステージですでに属性名を小文字化して格納する。

属性値はASCII大小区別される。 [課題] 属性名「 class 」のASCII大小をどう扱うか?

名前空間

CSS 名前空間接頭辞は、ASCII大小区別する。

参照
https://triple-underscore.github.io/css-namespaces-ja.html#namespace-prefix

属性には @namespace で指定されたデフォルト(無名)の名前空間が適用されない。

参照
https://triple-underscore.github.io/selectors4-ja.html#attrnmsp
https://developer.mozilla.org/ja/docs/Web/CSS/@namespace

HTML5 は、 querySelector() に名前空間をサポートする予定はない。

参照
https://triple-underscore.github.io/DOM4-ja.html#selectors

宣言されていない名前空間接頭辞を伴う属性セレクタは無効なセレクタである。

参照
https://triple-underscore.github.io/selectors4-ja.html#attrnmsp

無効なセレクタは何にもマッチしない。

参照
https://triple-underscore.github.io/selectors4-ja.html#invalid-selector

[*|attr] はすべての接頭辞、あるいは接頭辞を持たない属性にマッチする。 [|attr] あるいは [attr] は、名前空間に属さない属性のみにマッチする。

参照
https://triple-underscore.github.io/selectors4-ja.html#attrnmsp

ノードの名前空間 URI はノードから得られる。 CSS 側の名前空間 URI は ctx から得る。


スタイルシートをサポートしていないので、名前空間をテストできていない。


このクラス詳解は次のファイルから抽出されました: