www.wanichan.com

XML宣言のついたWebページ内のブックマークの参照時にエラーが発生する

  • このエントリーをはてなブックマークに追加
ハイパーリンクの挿入時、他のWebページのブックマークを参照しようとするとエラーが発生する原因と対処方法について説明します。

はじめに

Expression Web 3から、他のWebページ内のブックマークにハイパーリンクを参照しようすると、以下のエラーが発生する場合があります。

Microsoft Expression 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属性をブックマークとして参照できた方がいいと思います。

スポンサーリンク
INDEX
  • このエントリーをはてなブックマークに追加

問題は解決しましたか?

操作方法、設定方法等で困ったら、 Expression Web Users Forum に投稿してください!

▲このページのトップへ