#?SuikaWiki/0.9
[[#comment]]
*script 要素 (HTML)
[1] スクリプトを文書に埋め込むための要素です。 [[NetscapeNavigator]] 2
が最初に [[JavaScript]] ([[LiveScript]]) で実装しました。
[20] [[HTML]] 3.2 は将来の版で使用すると予告しています。
>
- [14] [CODE[script]] 要素が出現できるのは [[head]] 要素又は [[body]] 要素の内容です。 (厳密には各規格を参照。) しかし[[不思議マーク付け]] HTML では、 [[html]] 要素の外側 (前や後), [CODE[head]] 要素と [CODE[body]] 要素の間を含めて、ありとあらゆる場所に出現します。
- [15] >>14 参考
- [16] ''Another HTML-lint : Explanation''
[[#comment]]
**属性
[9]
,名前 ,値の型 ,既定値 ,意味 ,主な規格・実装
,event ,[[CDATA]] ,なし ,催事名 >>12,[[WinIE]]
,for ,[[IDREF]] ,なし ,対象要素 >>12,[[WinIE]]
,language ,[[CDATA]] ,なし ,スクリプト言語 >>2 ,[[HTML4]] (非推奨)
,src ,[[URI]] ,なし ,スクリプトの URI >>4 ,"HTML4, [[NN]]3+"
,type ,[[媒体型]] ,必須 ,スクリプト言語の媒体型 >>3,"HTML4, NN3+"
,(これで全部ではありません。),==,==,==
[2] [CODE[language]] 属性はスクリプト言語の種類を指定します。
きちんとした規定・運用は実質的にありません。
多くの実装は [CODE[JavaScript]] を既定値としています。
大文字・小文字は区別されません。 [[HTML4]] では非推奨です。
使われている値については[[スクリプトの媒体型]]を参照。
[3] 適当な文字列だった >>2 の [CODE[language]] に代わって導入されたのが
[CODE[type]] 属性で、 HTML4 では必須です。
こちらではスクリプト言語を[[媒体型]]で指定します。
しかし [CODE[language]] 属性の失敗は生かされず、未登録の媒体型が多種使われています。
[[スクリプトの媒体型]]を参照。
[4] [[src]] 属性はスクリプトの所在を [[URI]] で示します。
この属性を使って外部参照している時は [CODE[script]]
要素自体は[[空要素]]でなければなりません。
- [12] [[M$]] 独自拡張の [CODE[for]] 属性とか [CODE[event]] 属性もあります。例: for="window" event="onload"
- [13] [CODE[src]] 属性に対応しているのは [[NN]] 3.0 以降だそうです。
- [17] [[Mozilla]] 1.3a では、 [SAMP[]] のように指定できます。 [SAMP[]] とか [SAMP[]] とかでも OK ですが、 [SAMP[]] や [SAMP[]] では動作しません。
- [18] [CODE[language]] 属性と [CODE[type]] 属性とで値が違う場合、 [[Mozilla]] 1.3a や [[WinIE]]6 では [CODE[type]] 属性が優先されます。
- [19] [[defer]] 属性について: ''JavaScript質問スレ''
- [24] [[DOM]] (水準1以上) HTML では、 [CODE(DOMi)[[[HTMLScriptElement]] 界面に、「将来の使用のために予約」と称して [CODE(DOMa)[[[htmlFor]]]] 属性及び [CODE(DOMa)[[[event]]]] 属性が定義されています。
- [25] >>24 そんな将来くるのかな〜。来たら嫌だな〜
- [26] >>24-25 将来の使用は M$ の仕様の間違いじゃないのかな。
[[#comment]]
*script 要素 (ASP)
[[#comment]]
**属性
,HTML (>>9) に加えて、,==,==,==
,runat ,"server" ,なし ,動作場所 >>5
[5] [CODE[runat]] は、 [[M$]] の [[ASP]] で使われて、値が [CODE["server"]]
である場合に、その要素のスクリプトはサーバーで処理されます。
(クライアントには送られません。) この属性は [[W3C]]
の規格では規定されていません。サーバーで処理される以外で使ってはいけません。
- [6] >>2-3,>>5 [CODE[language]] 属性や [CODE[type]] 属性を省略しても [CODE[<%@ Page Language="VB" %>]] みたいのが書いてあれば、それ以降の部分で解釈されるサーバー側スクリプトはその言語で解釈されるそうです。
- [7] >>5-6 それから、 [CODE[runat]] 属性はどんな要素にも? 使えて、サーバー側スクリプトからアクセス可能なことを表す?らしいです。全くもって理解不能な世界ですが。。。
- [8] >>2 ASP での既定値は (設定ファイルで変更しない限り) [CODE[VB]] (= [[VBScript]]) だそうです。
[[#comment]]
*msxsl:script 要素 (M$XML の XSLT 実装)
[21] [CODE(XML)[{urn:schemas-microsoft-com:xslt}:script]]
要素を使うと、 [[XSLT]] (の [[XPath]] を使う文脈)
で利用者定義の関数を使用することが可能となります。
親要素は xslt:[[stylesheet]] 要素又は xslt:[[transform]]
要素です。内容は #[[PCDATA]] です (たぶん)。
,implements-prefix,名前空間接頭辞 ,必須 ,関数の名前空間
,language ,html:[[language]] と同じ ,不明 ,スクリプト言語
[[language]] 属性には [CODE(HTML)[html:script]]
要素の場合と同じ値を指定できるそうです。
[CODE(XML)[implements-prefix]] 属性には、 XSLT
側で関数を呼ぶ際の [[XML名前空間]]接頭辞を与えます。
この値は自分以上の要素の [[xmlns]]
属性を使って宣言されていなければならないはずです。
[22] 言葉で説明するより実例を見たほうが分かりやすいでしょう。
function bar (baz) {
return baz;
}
この場合は関数 [CODE(XPath)[foo:bar(baz)]] は引数 [CODE(JS)[baz]]
をただ返すだけの何の面白味もないものですが、
雰囲気はつかめるでしょう。
-''XSLT Elements''
[[#comment]]
-''XSLT 1.0で正規表現を使う(MSXML限定)''
[[#comment]]
*xalan:script 要素 (Xalan-Java XSLT 実装)
[23] [[Xalan]] では [[XSLT]] [[スタイル・シート]]で
[[JavaScript]] などを使うのに [CODE(XML)[xalan:script]]
要素を使います。
親要素は xalan:[[component]] 要素です。
,lang ,CDATA ,必須 ,スクリプト言語
,src ,[[URI]] ,(指定なし) ,外部スクリプト参照
[[HTML]] や MSXML での書き方と互換性はありません。
-''Xalan-Java Extensions''
[[#comment]]
*メモ
- [10] CSP の script 要素では runat="server"/"compiler" の属性があります。 ''Introduction to Cache Server Pages - The CSP Compiler''
- [11] このほか CSP の script 要素には色んな独自拡張属性 (もしかして自由に作れる?) があります。 ''技術サポート''