QName 、または修飾名は、 XML文書内の要素、属性、または識別子の完全修飾名です。 QName は、XML名前空間のURIを、その名前空間内の要素、属性、または識別子のローカル名に簡潔に関連付けます。[ 1 ]この関連付けを行うために、QName はローカル名にその名前空間に対応するプレフィックスを割り当てます。 全体として、QName はXML名前空間のURI、プレフィックス、およびローカル名で構成されます。
ワールドワイドウェブコンソーシアムは、 1999年の仕様「XMLの名前空間」でQName規則を導入しました。[1] [2]
目的
URI 参照は長くなり、要素/属性の命名に禁止されている文字が含まれる可能性があるため、URI と名前空間プレフィックス間のマッピングを作成するために QName が使用されます。マッピングにより URI の省略が可能になるため、XML ドキュメントをより便利に記述できるようになります (以下の例を参照)。
正式な定義
QNameはW3Cによって正式に次のように定義されています: [3]
QName :: = PrefixedName | UnprefixedName
PrefixedName ::= Prefix ':' LocalPart
UnprefixedName ::= LocalPart
Prefix ::= NCName
LocalPart ::= NCName
NCName は次のように定義されます。
NCName :: = Name - ( Char * ':' Char * ) (* XML 名、":" なし *)
Name ::= NameStartChar ( NameChar ) *
NameStartChar ::= ":" | [ AZ ] | "_" | [ az ] | [ # xC0- # xD6 ] | [ # xD8- # xF6 ]
| [ # xF8- # x2FF ] | [ # x370- # x37D ] | [ # x37F- # x1FFF ]
| [ # x200C- # x200D ] | [ # x2070- # x218F ] | [ # x2C00- # x2FEF ]
| [ # x3001- # xD7FF ] | [ # xF900- # xFDCF ] | [ # xFDF0- # xFFFD ]
| [ # x10000- # xEFFFF ]
NameChar ::= NameStartChar | "-" | "." | [ 0 - 9 ]
| # xB7 | [ # x0300- # x036F ] | [ # x203F- # x2040 ]
Char ::= (* サロゲート ブロック FFFE および FFFF を除く任意の Unicode 文字。 *)
# x9 | # xA | # xD | [ # x20- # xD7FF ]
| [ # xE000- # xFFFD ] | [ # x10000- # x10FFFF ]
ここで、Prefix は名前空間のプレースホルダーとして使用され、LocalPart は修飾名のローカル部分として使用されます。ローカル部分は、属性名または要素名にすることができます。
例
<?xml version="1.0"?>
<doc xmlns:x= "https://example.com/ns/foo" > <x:p/> </doc>
2行目では、プレフィックス「x」がURI「http://example.com/ns/foo」に関連付けられていると宣言されています。このプレフィックスは、この名前空間の略語として使用できます。その後、タグ「x:p」は、名前空間参照として「x」を使用し、ローカル部分として「p」を使用しているため、有効なQNameです。タグ「doc」も有効なQNameですが、ローカル部分のみで構成されています。[4]
参照
参考文献
- ^ ab Walsh, Norman 編 (2004 年 3 月 17 日)。「XML コンテンツで修飾名 (QName) を識別子として使用する」。W3.org。World Wide Web Consortium。2018年6 月 12 日閲覧。
- ^ Bray, Tim; Hollander, Dave; Layman, Andrew 編 (1999 年 1 月 14 日)、「Namespaces in XML」、W3.org、World Wide Web Consortium 、 2018 年 6 月 12 日取得
- ^ XML 1.0 の名前空間 (第 2 版)
- ^ XML 1.0 の名前空間 (第 2 版)
