文字「&」を出力したいのにCGI.pmが自動的に「&」に変換してしまいます。
具体的には、
<a href="abc" accesskey="&">abc</a>
のような文字列を出力させるために、
print($q->a({-href => 'abc', -accesskey => '&'}, 'abc'))
というコードを実行したのですが、
出力される文字列は、
<a accesskey="&" href="abc">abc</a>
のように「&」が自動的に「&」に置き換わってしまいます。
これの解決策として、オブジェクトを使用せずに、直接CGI.pmのメソッドを呼び出すと、なぜか変換されません。
すなわち、上のコードの「$q」の部分を「CGI」として、
print(CGI->a({-href => 'abc', -accesskey => '&'}, 'abc'))
とします。
これは何か意味があるのでしょうか。それともただのバグ?
直接CGI.pmのメソッドを呼び出さなくても解決する方法はありますか。
accesskeyに関するご意見は、先日質問したこちらのスレへ頂けるとうれしいです。
http://oshiete1.goo.ne.jp/qa5707867.html
No.6ベストアンサー
- 回答日時:
えぇと, #2 の参考にあげた URL を読んでいただけるとありがたいのですが,
Certain attributes call for a single character from the document character set. These attributes take the %Character type in the DTD.
Single characters may be specified with character references (e.g., "&").
とあります. 最後の 1文を読めば分かるように, 「1文字」であっても文字実体参照を使うことは仕様上可能です.
承知しました。
しかし私の行きつけのチェックサイトでは、実体参照をした場合、1文字と見なしてくれないため、次の4文字は使用しない方針とします。
ダブルクォート(")、アンパサンド(&)、山カッコ(<と>)
No.5
- 回答日時:
W3C でも検証ツールは出している (ただしメッセージはすべて英語) ので, そっちでも確認してみてはどうでしょうか. でそっちでしらべると & でも & だけでも通ったりしますが....
いずれにしても, 仕様上は & や " などの文字実体参照を使えないとダメなはずです.
参考URL:http://validator.w3.org/
Tacosanさん、ご返信ありがとうございます。
なんとW3Cのツールでさえ、仕様通りではないのですね!
1.&はHTMLのメタ文字であり属性値としても「&」とせず「&」としなければならない
2.accesskey属性は1文字でなければならない
この2点を考慮すると、
accesskey="&"
は1に違反し、
accesskey="&"
は2に違反するため、
どちらも不正解に思えてきました。
ここは無難に&は使わない方がいいかなぁ?
No.4
- 回答日時:
えぇと,
Authors should use "&" (ASCII decimal 38) instead of "&" to avoid confusion with the beginning of a character reference (entity reference open delimiter). Authors should also use "&" in attribute values since character references are allowed within CDATA attribute values.
とあるので「& だけにする」のはアウトではないかと>#3.
まあ, & だけでも「てきと~に解釈してくれる」ユーザエージェントが多いかもしれないけど, should が使われている以上「ダメ」といわれても文句は言えない.
参考URL:http://www.w3.org/TR/html401/charset.html#h-5.3.2
まとめてのお礼でお許しを!
お2人の助言から、私としても、
accesskey="&"
とするのが、正解だと思いました。
そういうわけで、私の行きつけのチェックサイトがバグっている疑いが出てきました。
何とかしてサイト作成者とコンタクトしてみます。
今後も利用したいので。
No.3
- 回答日時:
どちらも正しい
&
^^^^^一文字でないで、エラーがカウントされている。以後のチェックはスキップされている。
よって、CGI.pmは修正している。
なお、accesskeyに&を使うと、キー操作はAlt + Shift + 6 になるけど・・・
No.2
- 回答日時:
ORUKA1951さんではありませんが仕様上は
<a href="abc" accesskey="&">abc</a>
が正解.
参考URL:http://www.w3.org/TR/html401/types.html#type-cha …
No.1
- 回答日時:
いやはやあまりにも基本的なところで躓いている。
【引用】____________ここから
また、著者は、「&」の代わりに「&」(ASCII十進38)を用い、文字参照の冒頭――文字実体参照の開始区切り子――と誤解されるのを避けるべきである。 CDATA型の属性値には文字参照が出現できるので、著者は属性値においても「&」を用いる必要がある。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[5.3.2 文字実体参照( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )]より
HTML内には決してそのままでは記述できない文字があります。
# 「<」は < 記号を表現する。
# 「>」は > 記号を表現する。
# 「&」は & 記号を表現する。
# 「"」は " 記号を表現する。
は、書けない。これらの文字は、HTML内でマークアップするために使われるため、必ず数値文字参照、あるいは文字実態参照で記述しなければなりません。
はじめてのWebドキュメントづくり「HTML化する文章と文字」 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/www/chars … )
CGIを使うためには、最低限これらのことは知っておかないと無理ですよ。
こんにちは。
なぜ、このような質問をしたいかというと、
私の行きつけの構文チェックサイト(http://openlab.ring.gr.jp/k16/htmllint/htmllintl …)では、
<a href="abc" accesskey="&">abc</a>
と書くと、
<A> の ACCESSKEY の属性値 `&` は正しくありません。ASCII1文字でなければなりません。
というエラーになってしまうためです。
W3Cでは、「属性値においても「&」を用いる必要がある」としているのですね。
しかし、このチェックサイトでは、
<a href="abc" accesskey="&">abc</a>
と書いても、エラーになりません。
ORUKA1951さんは、
<a href="abc" accesskey="&">abc</a>
<a href="abc" accesskey="&">abc</a>
この2つの書き方のうち、正しいのはどちらだとお考えですか。
はたまた、どちらも不正解ですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
「abcで始まらない」を正規表現...
-
角カッコが含まれてるかどうか...
-
正規表現の否定先読みで、複数...
-
CGI.pmで'&'が'&'に置き換...
-
VBA EXCEL あるセルの中の一...
-
バッチファイルの正規表現を利...
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
カンマ区切りの数字をCSVフ...
-
Accessで日付や数値を全角で表...
-
住宅にカナを入力する際に丁目...
-
EXCELからCSVにすると余計なカ...
-
word差し込み印刷 半角カタカ...
-
文字コードの%E3%80%とは何です...
-
CSVの定義
-
EXCEL VBA でCTRL+Fのダイア...
-
コマンドプロンプト 全角を含ん...
-
正規表現
-
VBA 文字に半角が含まれて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
VBA EXCEL あるセルの中の一...
-
正規表現の否定先読みで、複数...
-
角カッコが含まれてるかどうか...
-
「abcで始まらない」を正規表現...
-
正規表現 英数字を1つ以上含む...
-
バッチファイルの正規表現を利...
-
長い文字列から特定の数字を取...
-
入力された文字列が、LD22000を...
-
文字列から数値を抽出したいの...
-
【abc】に【完全一致】する正規...
-
VBにおける文字列の部分一致検索
-
正規表現で、ある文末に不一致...
-
正規表現について
-
javaの正規表現について
-
英字の大文字小文字および混在...
-
正規表現で
-
拡張子の正規表現
-
正規表現 指定文字列以外の記述法
-
Perl CSVファイルの複数条件で...
おすすめ情報