Ошибка проверки 'nxml-mode' с атрибутом 'usemap'

В моих XHTML документах nxml-mode (через включенный XHTML Компактная схема Relax NG) помечает значения атрибутов usemap ошибкой Attribute value invalid.

<img src="sample_image.png"
     usemap="#sample_image_map"
     alt="Sample Image"
     border="0" />

Проблема заключается в наличии ведущего символа # в значении атрибута usemap. Если я удалю символ #, nxml-mode укажет, что значение допустимо. Но ведущий символ # обычно ожидается в значении usemap, которое обычно используется для ссылки на определение map в другом месте файла.

Не вызывает ли nxml-mode ложное сообщение об ошибке проверки для значения usemap?

(Обратите внимание, что я использую Emacs 24.2.1 и версию nxml-mode, которую он включает.)


Вот полный пример XHTML, который проверяется на валидаторе W3C:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>nxml-mode Validation Problem</title>
  </head>
  <body>
    <!--  The '#' is OK here. -->
    <a href="#sample_link">Sample Link</a>

    <map id="sample_image_map">
      <area shape="poly" coords="100,0, 200,0, 200,50, 100,50"
            alt="Sample Area"/>
    </map>

    <!--
        * For the value of the 'usemap' attribute, 'nxml-mode'
        * issues the error 'Attribute value invalid'.
        *
        * However, if the '#' is removed from the value
        * '#sample_image_map', 'nxml-mode' indicates the value
        * is valid.
    -->
    <img src="sample_image.png"
         usemap="#sample_image_map"
         alt="Sample Image"
         border="0" />

  </body>
</html>

person DavidRR    schedule 09.09.2014    source источник


Ответы (1)


[Вот результат моего исследования ... другие ответы, конечно, приветствуются.]

Мне кажется, что режим nxml может неправильно отображать атрибут usemap в IDREF. Вот определение usemap в etc / schemas / xhtml-csismap.rnc (a Relax NG компактный файл схемы):

usemap.attlist = attribute usemap { IDREF.datatype }?

Когда я меняю определение на отображение usemap на URI, nxml-mode будет счастлив:

usemap.attlist = attribute usemap { URI.datatype }?

Итак, это законное изменение?

Согласно Википедии, XHTML происходит от HTML 4.01. Я не могу найти никаких конкретных указаний для usemap в стандарте XHTML 1.0. Однако стандарт HTML 4.01 действительно указывает, что атрибут usemap - это URI:

usemap = uri [CT]

Кроме того, в документации HTML 4.01 для тега IMG на HTMLHelp.com говорится:

Атрибут USEMAP используется с клиентскими картами изображений, чтобы указать местоположение определения карты. Хотя это значение может быть полным URI, позволяющим применять одно определение карты к нескольким страницам, многие браузеры фактически находят определения карт только в одном файле. ограничение значения USEMAP идентификатором фрагмента, например "#map".

Наконец, обратите внимание на включение <img usemap=url> в этот ответ на вопрос ПОЛНЫЙ список атрибутов тегов HTML, имеющих значение URL?.

person DavidRR    schedule 09.09.2014