2013-01-01 34 views
13

我想包括在Blogger博客的模板網絡字體:實體「子集」的引用必須以';'結尾。分隔符

<?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生成的。

我應該如何解決這個問題?謝謝。

回答

46

這是因爲&是XML保留字符,這意味着 「XML實體從這裏開始」。 XML實體允許您打印難以嵌入文檔的字符或字符序列,因爲您的鍵盤上沒有它,或者因爲文檔編碼禁止它。例如,在(X)HTML中,&eacute;打印字符「é」,這在大多數美國鍵盤上不容易找到。 (可用實體取決於<!DOCTYPE>聲明XML文檔的。)

與方案的問題是,它意味着你不能明確地亂放你的文檔文字&字符,如果他們可以是實體的開始,所以你需要將它們編碼爲一個實體來解決這個問題。

您將需要用&amp;替換所有流浪者&,這將打印&而不會激怒XML解析器。在你的情況下,你應該很好地用你的兩個<link>標籤替代&subset=&amp;subset=

5

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 
相關問題