Добавить атрибуты id и class в xml

Я хочу использовать стандартные идентификаторы HTML и атрибуты класса в моих данных XML. Я хочу сделать это, чтобы иметь возможность объединять элементы в разные группы и комбинации. Это нормально, если я использую HTML DTD в своем документе XML. Любая помощь будет высоко оценен.

2 ответа

Решение

Вы можете использовать атрибуты, как вам нравится в XML. Если вы хотите, чтобы их воспринимали как "атрибуты HTML", чтобы к ним применялись правила обработки в спецификациях HTML, необходимо объявить соответствующие элементы как находящиеся в пространстве имен HTML. DTD не имеют к этому никакого отношения. Пример (обратите внимание, что script элемент тоже нуждается в пространстве имен):

<?xml-stylesheet href="dummystyle.css"?>
<doc>
<foo xmlns="http://www.w3.org/1999/xhtml" id="id" class="class">dummy</foo>
<script xmlns="http://www.w3.org/1999/xhtml" >
console.log(document.getElementById('id').innerHTML);
console.log(document.getElementsByClassName('class')[0].innerHTML);
</script>
</doc>

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

Нет полиции DTD, которая проверяет дизайн словаря XML на предмет правильности, так что вы почти наверняка в порядке, что бы вы ни делали. Трудно объяснить, что то, что вы хотите сделать, это нормально, но без понимания того, почему вы беспокоитесь, что это может быть не так. Вот что-то вроде скаттершот-подхода, объясняющего, почему вам не о чем беспокоиться.

Юридически использование HTML DTD, определенного W3C, регулируется любой лицензией, которую W3C на него наложил; почти наверняка нет никаких юридических препятствий для повторного использования DTD или его частей (HTML 4.01 и XHTML 1.0 имеют тщательно модульные DTD, предназначенные для повторного использования). Но я не юрист, и это не юридическая консультация.

С моральной точки зрения нет возражений против использования атрибутов id и class в вашем словаре с тем же значением, которое они имеют в HTML. Некоторые могут сморщить нос, но их опасения могут быть эстетическими или политическими, а не моральными.

Технически, если вы просто хотите использовать атрибуты id и class, а не какую-либо большую часть HTML DTD, маловероятно, что повторное использование HTML DTD принесет вам много преимуществ. Модуляризация сложна, и для того, чтобы она работала, требуется много работы такого рода, которая привлекает некоторых людей, а не столько других. Таким образом, самый простой и наиболее распространенный способ повторного использования для отдельных атрибутов HTML - это просто объявить атрибуты соответствующих имен в вашей схеме и указать в своей документации, что они имеют значения, данные им в HTML.

Другие вопросы по тегам