html
  • xml
  • google-webfonts
  • 2013-01-01 10 views 13 likes 
    13

    Próbuję zawierać Czcionki Webfonts w szablonie Blogger blogu:Odwołanie do "podzbioru" encji musi kończyć się znakiem ";" Ogranicznik

    <?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/> 
    

    I gdy próbuję zapisać szablon, otrzymuję:

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

    Próbowałem dodać ; ale bezskutecznie. Linki są generowane i pobierane z Czcionki internetowej Google.

    Jak rozwiązać ten problem? Dzięki.

    Odpowiedz

    46

    To dlatego & jest znakiem zarezerwowanym w XML, które oznacza "podmiot XML zaczyna się tutaj". Elementy XML umożliwiają drukowanie znaków lub sekwencji znaków, które trudno jest osadzić w dokumencie dosłownie, ponieważ nie masz go na klawiaturze lub ponieważ kodowanie dokumentu zabrania tego. Na przykład w (X) HTML, &eacute; drukuje znak "é", co nie jest łatwe do znalezienia na większości amerykańskich klawiszy. (Dostępne jednostki zależą od deklaracji <!DOCTYPE> dokumentu XML.)

    Problem z tym schematem polega na tym, że nie można jednoznacznie pozostawić literalnych znaków & wokół dokumentu, jeśli mogą one być początkiem jednostki, więc musisz zakodować je jako jednostkę, aby rozwiązać ten problem.

    Będziesz musiał wymienić wszystkie zabłąkane & na &amp;, które wydrukują & bez gniewu analizatora składni XML. W twoim przypadku powinieneś być dobry w zastępowaniu &subset= przez &amp;subset= w swoich dwóch tagach <link>.

    5

    Ampersandy w języku XML wskazują początek odwołania do encji. Zaczyna się od znaku ampersand, następnie znajduje się znacznik wskazujący, do którego elementu się odnosi, a następnie średnik, aby go zakończyć. Aby umieścić literałowy znak ampersand w dokumencie, należy użyć odwołania do jednostki znaku, które odnosi się do znaku ampersand, tj. &amp;.

    Parser próbuje przeanalizować następujące dane tak, jakby były referencjami encji, których nie ma. Właśnie dlatego nie parsuje - nie może znaleźć średnika na końcu odwołania do encji, ponieważ nie powinno być odniesieniem do encji.

    Na przykład, gdzie trzeba:

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

    Trzeba:

    http://fonts.googleapis.com/css?family=Share:400,700&amp;subset=latin,latin-ext 
    
    Powiązane problemy