XML宣言のついたWebページ内のブックマークの参照時にエラーが発生する
はじめに
Expression Web 3から、他のWebページ内のブックマークにハイパーリンクを参照しようすると、以下のエラーが発生する場合があります。
原因
HTML ファイルにおいて、次のコードが記述されていることにより発生いたします。
<?xml version="1.0" encoding="utf-8"?>
本コードは、XHTML によって記述されたページにおける XML のバージョンや文字コードを宣言するための記述です。この記述によって HTML のページ自体が XHTML として記述されたことを宣言しています。
W3C が定義した XHTML の仕様では、name 属性を廃止されております。Expression Web 3 以降では、W3C で定義されている XTHML の仕様に可能な限り準拠したエディタとして動作しているため、"XHTML 内には name 属性が記述されていない" と判断した動作になっていると考えられます。
しかし、[ハイパーリンクの挿入]ダイアログボックスからの [ブックマーク]ボタンは、HTML ファイル上の name 属性に対してのみ有効な機能として実装されていることから、上述のような動作から、リンクの指定先である HTML ファイルが XHTML として宣言されている時点で[ブックマーク]による name 属性の確認をしておらず、結果として "Microsoft Expression Web はこのファイルを開けないか、この種類のファイルを解析できません" といったエラーが表示される動作になると考えられます。
本動作自体は、W3C によって定義された XHTML の仕様に基づく動作であり、Expression Web 3 以降の想定された動作となります。
回避策
以下のいずれかの方法で対処します。
手動で入力する
[ハイパーリンクの挿入]ダイアログボックスの[アドレス]ボックスに、ブックマーク部分を手動で入力します。
XML宣言を削除する
UTF-8のXHTML文書であればXML宣言は省略可能のようなので、そのXML宣言行を削除します。複数のWebページで一括処理するには検索と置換機能を利用してください。
<?xml version="1.0" encoding="utf-8"?>
対象バージョン
- Microsoft Expression Web 4
- Microsoft Expression Web 3
備考
XHTMLな世界では、name属性の代わりにid属性を使うように言われていますが、ブラウザ互換でname属性とid属性の両方いれときましょう、みたいなこともネット上で記述されていたりもします。しかし、XML宣言を入れることによりExpression Web側でXTHMLとして認識されてしまうと、name属性があったらとにかく「ありえない!」というエラーが出てしまうということになります。
残念ながら今のところ、XHTML文書においてid属性を参照する機能は実装されていません。
HTML文書であればname属性、XHTML文書であればid属性をブックマークとして参照できた方がいいと思います。
- Expression Web FAQ
- Expression Web 3/4 の問題
- Expression Web 4 SP1におけるFTPSの問題
- XML宣言のついたWebページ内のブックマークの参照時にエラーが発生する
- アウトラインリスト作成の問題について
- 定義された用語' を指定すると特定のファイルで結果が不正になる
- ファイルの拡張子の大文字/小文字の変更に関する問題について
- 「標準のエディタとして使用しますか?」と表示される問題について
- Webページを新規作成するとtitleタグが最初に記述される問題について
- ダイナミックWebテンプレートが適用されたページが正しく更新されない場合の対処方法
- ブラウザからのテキストなどのコピーにおいての問題
- オートサムネイル生成後に'xthumbnail-orig-image'属性が挿入される問題の対処方法
- 編集中に日本語入力が出来なくなった場合の対処方法
- [フォルダ]ビューで「タイトル」フィールドが表示されない問題について
- Expression Web 3/4 の問題
問題は解決しましたか?
操作方法、設定方法等で困ったら、 Expression Web Users Forum に投稿してください!