Почему этот простой код не проверяется? - PullRequest
1 голос
/ 25 июня 2010

Ниже приведен очень простой код, который я не могу проверить на http://validator.w3.org/check, и ошибки не имеют для меня никакого смысла.Я в тупике, может кто-нибудь увидеть / понять проблему (ы)?

Код:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <title>Test Mobile Site</title> 
        <link href="/css/site.css" rel="stylesheet" type="text/css" media="handheld" /> 
    </head> 
    <body> 
        <div id="test">Why won't you validate for me? :(</div>
    </body> 
</html>

Ошибки:

Ошибка: строка 18, столбец 46: неверный ввод UTF-8, укажите кодировку!Байты: 0x92 0x53 0x20 0x52

Ошибка: строка 69, столбец 17: ожидается условный раздел INCLUDE или IGNORE.

Ошибка: строка 73, столбец 39: xmlParseElementDecl: «EMPTY», «ANY»или '(' ожидается

Ошибка: строка 73, столбец 39: ошибка содержимого во внешнем подмножестве

Ответы [ 2 ]

1 голос
/ 25 июня 2010

Да, DTD мобильного профиля XHTML является поддельным. Вы никогда не будете проверять любой документ, используя его.

Проблема в http://www.openmobilealliance.org/tech/DTD/xhtmlmp12-form-1.mod,, который является версией модуля форм XHTML, который OMA изменил, добавив один атрибут, inputmode. Им удалось все испортить, вставив этот комментарий с умной цитатой из MS Word в модуль:

NO REPRESENTATIONS OR WARRANTIES (WHETHER EXPRESS OR IMPLIED) ARE
MADE BY THE OPEN MOBILE ALLIANCE OR ANY OPEN MOBILE ALLIANCE MEMBER
OR ITS AFFILIATES REGARDING ANY OF THE IPR’S REPRESENTED ON THE OMA

и сохранение его как cp1252 вместо кодировки по умолчанию для сущностей XML, UTF-8. Это приводит к точной ошибке о недопустимой последовательности UTF-8, которая затем, кажется, запутывает валидатор в том, что он не может правильно проанализировать следующие объявления сущностей.

(Вдвойне смешно, что эта ошибка кодирования сама по себе вызвана основной грамматической ошибкой, апострофом бакалейщика. Но тогда, поскольку OMA - это шутники, которые дали нам фиаско WAP, возможно, следует ожидать такого уровня некомпетентности)

1 голос
/ 25 июня 2010

Что ж, это был мой второй раз, когда я пытался это выяснить, и после достаточного количества копаний я вижу, что в июле 2008 года W3C выпустил xHTML Basic 1.1, который теперь заменяет xHTML Mobile Profile 1.2 из Open Mobile Alliance.* Мораль истории: вы найдете загрузки с использованием MP 1.2 DTD в мобильных примерах через Интернет, но вам нужно использовать:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">

, если вы хотите выполнить правильную проверку.Надеюсь, это поможет кому-то другому не тратить время, которое я потратил!

Ссылка: http://en.wikipedia.org/wiki/XHTML#XHTML_Basic_and_XHTML-MP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...