xml:base

xml:base 属性 (XML)

[1] xml:base 属性は、 XML要素基底URL を指定します。

[21] 仕様書

属性値

第1版の定義

[44] 適当な属性値

xml:base属性値は、 後述の処理の後にRFC 2396 URI参照として処理されます。 XML基底 3

xml:base属性値で使うことのできる文字は、 XMLの一般の場合と同じです。 XML基底 3.1

属性値からURI参照に変換するためには、

UTF-8百分率符号化します。 XML基底 3.1

詳しくはXML//URIおよびIRIの項を参照。

[52] RFC 3986との関係

RFC 3986の新しい構文では、命名権者部に百分率符号化や新しいIP番地のための構文が認められていますが、 RFC 2396RFC 2732では認められていません。 XML基底仕様を厳密に運用するなら、 RFC 3986URI参照の一部はxml:base属性値に使えません。

ただし、 >>40 の規定により、 RFC 3986 に従って解釈する実装も不適合にはなりません。

[53] RFC 3987との関係

RFC 3987RFC 3986にあわせた新しい構文を採用していますから、 XML基底仕様を厳密に運用するなら、 RFC 3987IRI参照の一部はxml:base属性値に使えません。

ただし、 >>40 の規定により、 RFC 3987 に従って解釈する実装も不適合にはなりません。
なお、 >>44URI参照に変換するために逃避しなければならない文字の種類は、 RFC 3987算法で規定されたものと一致しています。
[45] XML基底 3ではRFC 2396 URI参照として解釈するとしていますが、 同3.1の逃避に関するRFC 2732も参照しています。 字面通り厳密に解釈すると結局RFC 2732拡張は使えないことになってしまいますが、 本当にそれでよいのでしょうか。RFC 3986が発行された今、 早急に改訂するべきです。

[2] xml:base 属性の値の定義は URI 参照と解釈されるものですから、 # + 素片識別子をつけても構いません。 (あまり意味は無いですが。)

[75] 実のところ、XML基底仕様書には、 xml:base 属性値がある処理の後 RFC 2396 URI参照として処理される (実装に。) という説明があるだけで、 著者xml:base 属性にどのような値を指定してよいのか、 どのような値を指定することが期待されているのかがまったく規定されていません。

第2版の定義

[84] 属性値W3C WG Note で定義される LEIRI として解釈されます XML基底 第2版 3.

[85] ここでいう「LEIRI」は例示や文脈から鑑みて「LEIRI参照」のつもりと思われます。

[86] 相変わらず、「解釈される」というだけで、著者に対する要件はないみたいです。

[88] 歴史的経緯や各定義間の差異など詳しくは IRI の項を参照してください。

文脈

[19] XML Base 仕様書としては任意の XML マーク付け言語で利用されることを想定しているのでしょうが、 かといってすべての XML マーク付け言語で利用できると規定しているわけではありません。

[22] かつては Web でも一部で利用・実装されており、 HTML StandardDOM Standard にも関係する規定がありました。しかしほとんど需要がないにも関わらず実装と仕様を複雑にするものであり、 2015年には削除されています。

[26] RDF/XML では仕様に組み込まれており、 xml:base に対応する必要があります。

[27] Atom では理論上は xml:base に対応する必要がありますが、 実際にも使われているのかどうかは明らかではありません (RSS では絶対URL が使われていました)。

処理

[42] 意味不定の場合

[20] >>40 (>>2 の絡みで、厳密にはURI 参照と解釈できない場合とでもしないといけないと思うのですが...)

基底URIの算出

[46] XML基底 4

[47] システム識別子における基底URIについては、 XMLの仕様書に規定があります。 (XML//URI//基底の項を参照。)

[48] xmlns属性については特に例外が規定されていないので、 >>46 の原則通りになりますが、名前空間URI絶対URI参照ない時にどう処理されるのかはXML系仕様書では定義していません。 XML基底 附属書C (参考)

相対参照の解決

[49] XML基底仕様書には4 Resolving Relative URIsという章がありますが、 基底URIの決定方法の説明だけで、相対URI参照解決の方法は何ら規定していないようです。

XML基底仕様からの引用規格にRFC 2396およびRFC 2732がありますし、 本文中でも再三引用されていますから、それらで定義された方法で解決すると解釈するのが自然でしょう。

[50] RFC 3986との関係

RFC 3986相対参照解決方法にはRFC 2396のものと違いがあります。 問題となる変更点は2つあります。

[54] xml:base属性基底URIRFC 2396によれば階層的ではなく、相対URIを使えないにも関わらず、 属性値相対URIの場合はどうなるのでしょうか。 >>40 が適用されるのでしょうか。 (その場合はRFC 3986の動作をしても適合します。)
XML基底を参照する仕様の1つ、RDF/XML (2004年版) は、RFC 2396同文書参照基底URIに対して解釈すると規定しています。

[87] XML基底第1版正誤票 E04 および XML基底第2版勧告では、 RFC 3986 的解釈に従い、同文書参照であっても基底URL に基づき解釈する旨が規定されています。 ただし、 Note として、 RFC 2396 的に文書URL に基づく処理器が存在するため、同文書参照xml:base 属性で使うことは「強く非推奨 (strongly discouraged) 」とされています。

[51] RFC 3987との関係

>>44 の通り、IRI参照の多くはそのままxml:base属性値として使うことができますが、 逃避してURI参照にして処理すると定義されていますから、 解決IRI参照としてではなく、変換後のURI参照として行われます。

XML名前空間およびスキーマとの関係

[41] XML名前空間を使わない場合

XML名前空間を使わない場合、 名前xml:base属性を使うことができます。 XML基底 3

[3] XML名前空間を使う場合

XML名前空間を使う場合、 名前空間名http://www.w3.org/XML/1998/namespace (名前空間接頭辞xml) で局所名base属性を使うことができます。 XML基底 3

[24] XML基底仕様書にも注記がありますが、 xml:base 属性に DTD や外部スキーマで初期値が設定されていると、 妥当性を検証しない処理器などで正しい値が得られませんから、好ましくありません。

[11] >>5 ですから、既定値は DTD の内部部分集合で指定するか、 又は直接指定するべきだとされています。 (<http://www.w3.org/TR/xmlbase/#matching>, <http://www.w3.org/2001/06/xmlbase-errata>)

[55] XML Schemaによる定義

XML Schemaによる定義 <http://www.w3.org/2001/xml.xsd> (執筆時点での最新版は <http://www.w3.org/2005/08/xml.xsd>) では、xml:base属性データ型xs:anyURIとして宣言されています。 また、属性集合xml:specialAttrs に含まれています。

各種データ・モデルとの関係

[29] XML情報集合は、 XML 基底仕様書の規定に基づく要素情報項目基底URI 特性を定義しています。 >>25 の E02 の通り、一旦情報集合を構築してしまった後は xml:base 属性情報項目と 基底 URI 特性は切り離されてしまいます。

[30] DOM 3Node 界面の baseURI 属性は基底 URI を保持しています。 XML 情報集合の 基底 URI とは異なり、 baseURI の値は (XML 基底仕様書に基づく) 計算により求めます。 xml:base 属性節と baseURI は同期しています。

[59] 基底URIxml:base属性では、 基底URIの方を優先して相対参照解決に使うべきとされています。 XML情報集合 1

(名無しさん)

[60] 基底URIxml:base属性では、 基底URIの方を優先して相対参照解決に使うべきとされています。 XML情報集合 1

(名無しさん)

[61] 基底URIxml:base属性では、 基底URIの方を優先して相対参照解決に使うべきとされています。 XML情報集合 1

(名無しさん)

応用言語と xml:base 属性

[23] xmlns 系属性の値も URI 参照 (XML 名前空間 1.1 では IRI参照) で、相対 URI 参照である可能性があります (常識的な仕様とは思えません:))。 (一応今では非推奨になっています。) しかしこの URI/IRI 参照は単なる識別子で、 解決する必要があるものではありませんから、そのまま扱います。 但しその名前空間 URI/IRI 参照をたどってみる場合には xml:base 属性の値を使って解決するのも勝手だそうです。

(そういえば XML 基底では IRI 参照の解決の方法は書かれていない。 そのうち改訂されるのか? それとも IRI 参照を解決する時には URI 参照に変換するのか?)

[4] XHTML の使用については XML Base 仕様書は参考で曖昧なことを書いています。 実際のところ W3C の XHTML 1DTD にはxml:base 属性は定義されていませんから、 そのままでは使えません。

XHTML 2.0 WD では明確に使用できると定義されています。

[5] XML Base を使用できると明記していない仕様では、 XML Base 対応 UA と非対応 UA で挙動が異なることになるので無理して使用しない方が良いと思われます。

xml:base 属性 (XML 型録)

[12] XML 型録のほとんどの要素型 (名前空間名urn:oasis:names:tc:entity:xmlns:xml:catalog 及び urn:oasis:names:tc:entity:xmlns:tr9401:catalog の全ての要素型。但し、 rewriteSystem, rewriteURI 両要素型を除く。) では xml:base 属性が使えます。 <http://www.oasis-open.org/committees/entity/spec.html#attrib.common>

[13] 唯二つ使えない両要素型も、 URI 参照を値に持つ rewritePrefix 属性を持っているのに xml:base 属性が無いのは不可解です。

これらの両要素型の rewritePrefix 属性、 仕様書本文中の定義では uri-reference になっていますし、本文中の説明でも相対 URI はその場の基底 URI で解決することになっていますが、 DTD では URI 参照ではなく単なる文字列になっています。 (もちろん実際の型は CDATA ですが、引数実体を使って型が擬似的に示してあります。あと、 DTD でなくても XML Schema も示してありますが、こちらも同じ状況です。)

もしかしたら rewritePrefix では URI としては不正な値 (http://foo. とか。) も認めたかったから文字列型にしたのかもしれません。 でもなんだかなあ。

xml:base 属性 (Atom)

[62] Atom 1.0AtomPubRFC 6721 で定義されているすべての要素には、XML基底で規定された xml:base属性を持って構いませんRFC 3986 にある基底URI (基底IRI) として使われます。

仕様書

メモ

[63] >>62 RFC 2396を参照するXML基底仕様を参照しながら、 RFC 3986の機能を持つといい、or IRI とまで書いていますが、いったいどう理解しろというのでしょう。

歴史

[7] XML Base は XLink と一緒に開発されたものの汎用性を持たせるべく独立した仕様となったそうです。

関連

[81] HTML では base 要素href 属性を指定することによって文書基底URL を指定することができます。 xml:base 属性はこの base 要素を参考に、より汎用的なものとして設計されたようです XML基底 1.

[82] HTML にはその他に codebase 属性もあり、 それも基底URL を指定するものとして説明されています。

[36] P3P基底URI を指定するための base 属性があります。

[83] HTTP には実体基底URL を指定するための Content-Base: 欄、 Base: 欄や、基底URLを指定する役割も果たすことになっている Content-Location: 欄があります。 MIME にも Content-Base: 欄や Content-Location: 欄があります。

[89] 『ジオどす』 京都通り名住所検索 ジオコーダー - 京都通り名ジオコーダーAPI『ジオどす』 ( 版) <http://geodosu.com/rss.xml>

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://geodosu.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>

RSS 2.0根要素xml:base 属性を指定している例です。

メモ

[9] XML 基底を使うとして、

<doc xml:base="http://foo.example/dir1/">
<style type="text/css" xml:base="http://foo.example/dir2/">
@import 'foo.css';
</style>
</doc>

foo.cssdir2 からの相対 URI として解釈されるのかな? (要素の内容だから。)

[10] HTML で

<!-- base = <http://foo.example/dir1/> -->
<head>
<base href="http://foo.example/dir2/"/>
<style type="text/css">
@import 'foo.css';
</style>
</head>

>>9 と同じように解釈されるのかなあ??

[31] XInclude, xml:base, and validation <http://norman.walsh.name/2005/04/01/xinclude>

XInclude の処理に伴って xml:base 属性情報項目が追加されると妥当性検証に影響がでかねないという問題 (xml:lang でも)。

(名無しさん)

[32] 2005 / 04 / 04: .NET developers want inconsistent schema validity on xml:* attributes? <http://monkey.workarea.jp/lb/archive/2005/4-04.html>

>>31 の問題で予想通り(藁) xml:*妥当性検証で無視すればよいという意見が出ていることに対して、 それでは xml:lang の値を制約したりできなくなるというおはなし。 (名無しさん 2005-04-05 00:21:13 +00:00)

[56] 正準XML (1.0) 仕様によって特定の要素以下を直列化する際には、 xml:base属性を含め、 xml名前空間に属する属性がその要素ancestor-or-selfのうちの一番近くにあるものが指定されます。 正準XML 2.4

(名無しさん)

[57] 排他的XML正準化 1.0仕様では >>56 の規定を適用しないことになっています。 (名無しさん)

[58] XIncludeでは基底URIとの整合性を保持するためにxml:base属性を追加することがあります。 (名無しさん)

[70] xml:base in M12N (Shane McCarron 著, 2007-07-13 21:52:09 +09:00 版) <http://lists.w3.org/Archives/Public/public-xhtml2/2007Jul/0024.html> (名無しさん)

[73] XML Base (Second Edition) (2008-03-20 00:21:54 +09:00 版) <http://www.w3.org/TR/2008/PER-xmlbase-20080320/> (名無しさん)

[74] Re: Issues concerning the <base> element and xml:base (Ian Hickson <ian@...> 著, 2008-02-13 01:15:07 +09:00 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/13246>

[76] Firefox でも Opera でも、 xml:base 属性の値は (LEIRI ではなく) HTML5 URL として処理されるようです。

Safari空文字列相対参照document.URL とみなすらしく (RFC 2396 時代の解釈)、 LEIRIURL か判断するいい方法が思いつきませんでした。

[77] Operaxlink:href 属性の値を URL ではなく LEIRI として処理するようですけど、これって多分、 基底URL は無変換で素通しして、最後に URL を使う場面でだけ HTMLSVG かで処理を分けているんじゃなく基底URL の段階で URI 化してるってことですよね。

メモ

[78] SMIL 3.0 Metainformation ( 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-metadata.html#edef-meta>

[79] Document Structure – SVG Tiny 1.2 ( 版) <http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/struct.html#XMLBaseAttribute>

RFC 3987 IRI参照

[90] XProc: An XML Pipeline Language ( 版) <http://www.w3.org/TR/2010/REC-xproc-20100511/#xml-base-attribute>

[91] Speech Synthesis Markup Language (SSML) Version 1.1 ( ( 版)) <http://www.w3.org/TR/2010/REC-speech-synthesis11-20100907/#S3.1.3>

[93] XFrames ( ( 版)) <http://www.w3.org/TR/2010/NOTE-xframes-20101216/#s_frames-element>

[96] Document Structure – SVG 1.1 (Second Edition) ( ( 版)) <http://www.w3.org/TR/2011/REC-SVG11-20110816/struct.html#Core.attrib>

[98] Web Applications 1.0 r7267 Narrow the scope of the xml:base ban to HTML elements. If SVG wants to allow them, e.g., that's up to them. ( ( 版)) <http://html5.org/tools/web-apps-tracker?from=7266&to=7267>

[100] IRC logs: freenode / #whatwg / 20130212 ( ( 版)) <http://krijnhoetmer.nl/irc-logs/whatwg/20130212#l-368>

[101] XBL 2.0 ( ( 版)) <http://dev.w3.org/2006/xbl2/Overview.html#rules-for-shadow-content-generation>

[102] XBL 2.0 ( ( 版)) <http://dev.w3.org/2006/xbl2/Overview.html#shadow-content-and-xmlbase>

[106] Bug 20976 – Define Node.baseURI properly ( ( 版)) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=20976#c5>

[107] 903372 – Remove support for xml:base ( ( 版)) <https://bugzilla.mozilla.org/show_bug.cgi?id=903372>

[108] Bug 17423 – ER: Add support for xml:base ( ( 版)) <https://bugs.webkit.org/show_bug.cgi?id=17423>

[109] Tiny Tiny RSS • View topic - xml:base support in atom feed ( ( 版)) <http://www.tt-rss.org/forum/viewtopic.php?t=2372>

[110] Tiny Tiny RSS • View topic - Problem with Tim Bray's ongoing blog ( ( 版)) <http://tt-rss.org/forum/viewtopic.php?f=1&t=2310>

[111] XML Binding Language (XBL) 2.0 ( ( 版)) <http://www.w3.org/TR/2007/CR-xbl-20070316/#rules>

[112] XML Binding Language (XBL) 2.0 ( ( 版)) <http://www.w3.org/TR/2007/CR-xbl-20070316/#shadow1>

[113] RDF 1.1 XML Syntax ( ( 版)) <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-xml/index.html#h3_section-baseURIs>

[114] RFC 7303 - XML Media Types ( ( 版)) <http://tools.ietf.org/html/rfc7303#section-6>

[8] IRC logs: freenode / #whatwg / 20150130 ( 版) <http://krijnhoetmer.nl/irc-logs/whatwg/20150130#l-417>

[14] Proposals/dropxmlattributes - SVG ( 版) <https://www.w3.org/Graphics/SVG/WG/wiki/Proposals/dropxmlattributes>

[15] Issue 341854 - chromium - Remove vestigal xml:base support - An open-source project to help move the web forward. - Google Project Hosting ( 版) <https://code.google.com/p/chromium/issues/detail?id=341854>

[16] 903372 – Remove support for xml:base ( 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=903372>

[17] 20976 – Define base URLs in DOM ( 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=20976>

[18] Remove xml:base dependency · whatwg/html@56f4346 ( 版) <https://github.com/whatwg/html/commit/56f4346ec71b2dc138038ce6512b626d6c563e00>

[28] ( ()) <http://www.fdj.com/feed/atom>

<?xml version="1.0" encoding="UTF-8"?><feed

xmlns="http://www.w3.org/2005/Atom"

xmlns:thr="http://purl.org/syndication/thread/1.0"

xml:lang="ja"

xml:base="http://www.fdj.com/wp-atom.php"

>

[33] XProc 2.0: An XML Pipeline Language () <https://www.w3.org/TR/2016/NOTE-xproc20-20160721/#xml-base-attribute>

[34] () <http://www.niso.org/apps/group_public/download.php/15933/z39_96-2015.pdf>

[35] AMP HTML Specification – AMP () <https://www.ampproject.org/docs/reference/spec>

XML-related attributes, such as xmlns, xml:lang, xml:base, and xml:space are disallowed in AMP HTML.