对实体"子集"的引用必须以";"结尾 分隔符

Jér*_*nge 14 html xml google-webfonts

我试图在Blogger博客的模板中包含webfonts:

<?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/>
Run Code Online (Sandbox Code Playgroud)

当我尝试保存模板时,我得到:

Error parsing XML, line 5, column 76: The reference to entity "subset" must end with the ';' delimiter.
Run Code Online (Sandbox Code Playgroud)

我试图添加;但不成功.链接是从Google Web Font生成和获取的.

我该如何解决这个问题?谢谢.

zne*_*eak 49

那是因为&XML中的保留字符意味着"XML实体从这里开始".XML实体允许您打印难以在文档中嵌入文档的字符或字符序列,因为您没有在键盘上使用它,或者因为文档编码禁止它.例如,在(X)HTML中,&eacute;打印字符"é",这在大多数美国键盘上都不容易找到.(可用实体取决于<!DOCTYPE>XML文档的声明.)

该方案的问题在于,&如果它们可以是实体的开头,则意味着您无法明确地在文档周围留下文字字符,因此您需要将它们编码为实体以解决该问题.

您将需要更换所有的流浪&&amp;,这将打印&不激怒XML解析器.在你的情况,你要善于用替换&subset=通过&amp;subset=在你的两个<link>标签.


Jim*_*Jim 5

XML中的&符号表示实体引用的开头.它以&符号开头,然后有一个标记表示它所指的是哪个实体,然后是一个分号来结束它.为了在文档中包含文字&符号,您需要使用引用&符号的字符实体引用,即&amp;.

由于您还没有这样做,解析器正在尝试解析以下数据,就好像它是实体引用一样,但实际上并非如此.这就是它无法解析的原因 - 它无法在实体引用的末尾找到分号,因为它不应该是实体引用.

例如,你有:

http://fonts.googleapis.com/css?family=Share:400,700&subset=latin,latin-ext
Run Code Online (Sandbox Code Playgroud)

你应该有:

http://fonts.googleapis.com/css?family=Share:400,700&amp;subset=latin,latin-ext
Run Code Online (Sandbox Code Playgroud)