Ссылка на объект "подмножество" должна заканчиваться разделителем"; " [дубликат]

этот вопрос уже есть ответ здесь:

Я пытаюсь включить 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/>

и когда я пытаюсь сохранить шаблон, я получаю:

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

Я попытался добавить ; но безуспешно. Ссылки генерируются и берутся из веб-шрифта Google.

как я должен решить эту проблему? Спасибо.

2 ответов


вот так & является зарезервированным символом в XML, что означает "сущность XML начинается здесь". XML-объекты позволяют печатать символы или последовательности символов, которые трудно встроить в документ буквально, либо потому, что у вас его нет на клавиатуре, либо потому, что кодировка документа запрещает это. Например, в (X)HTML,&eacute; печатает символ "é", который нелегко найти на большинстве клавиатур США. (Доступные объекты зависят от <!DOCTYPE> объявление XML-документ.)

проблема с этой схемой заключается в том, что это означает, что вы не можете однозначно оставить literal & символы вокруг вашего документа, если они могут быть началом сущности, поэтому вам нужно кодировать их как сущность для решения этой проблемы.

вам нужно будет заменить все ваши бродячие & с &amp;, которая будет печатать & не разгневав синтаксический анализатор XML. В вашем случае вы должны быть хороши с заменой &subset= by &amp;subset= в два <link> метить.


Амперсанды в 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