15

Blogger ブログのテンプレートに Web フォントを含めようとしています。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:version='2' class='v2' expr:dir='data:blog.languageDirection' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
  <head>
    <link href='http://fonts.googleapis.com/css?family=Share:400,700&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
    <link href='http://fonts.googleapis.com/css?family=Istok+Web:400,700&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
    <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/>
    <b:if cond='data:blog.isMobile'>
      <meta content='width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0' name='viewport'/>
    <b:else/>

テンプレートを保存しようとすると、次のようになります。

Error parsing XML, line 5, column 76: The reference to entity "subset" must end with the ';' delimiter.

を追加しようとしました;が、失敗しました。リンクは、Google Web Font から生成および取得されます。

この問題を解決するにはどうすればよいですか? ありがとう。

4

2 に答える 2

51

これ&は、「XML エンティティがここから始まる」ことを意味する XML の予約文字であるためです。XML エンティティを使用すると、キーボード上に文字がないか、ドキュメントのエンコーディングで禁止されているために、文字どおりにドキュメントに埋め込むのが難しい文字または一連の文字を出力できます。たとえば、(X)HTML では、&eacute;ほとんどの US キーボードでは見つけにくい文字 "é" が出力されます。(使用可能なエンティティ<!DOCTYPE>は、XML ドキュメントの宣言によって異なります。)

&この方式の問題点は、エンティティの先頭になる可能性がある場合、ドキュメントの周りにリテラル文字を明確に残すことができないことを意味するため、その問題を解決するには、それらをエンティティとしてエンコードする必要があります。

XML パーサーを怒らせずに印刷するには、すべての浮遊物&をに置き換える必要があります。あなたの場合、 2 つのタグをbyに置き換えるとうまくいくはずです。&amp;&&subset=&amp;subset=<link>

于 2013-01-01T17:03:23.107 に答える
6

XML のアンパサンドは、エンティティ参照の開始を示します。アンパサンドで始まり、参照しているエンティティを示すマーカーがあり、最後にセミコロンがあります。ドキュメントにリテラル アンパサンドを含めるには、アンパサンドを参照する文字エンティティ参照を使用する必要があります&amp;

これを行っていないため、パーサーは次のデータをエンティティ参照であるかのように解析しようとしていますが、そうではありません。これが解析に失敗する理由です。エンティティ参照であるはずがないため、エンティティ参照の末尾にあるセミコロンが見つかりません。

たとえば、次の場所があります。

http://fonts.googleapis.com/css?family=Share:400,700&subset=latin,latin-ext

あなたが持っている必要があります:

http://fonts.googleapis.com/css?family=Share:400,700&amp;subset=latin,latin-ext
于 2013-01-01T17:03:22.360 に答える