2013-08-18 3 views
1

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

+1

В чем вопрос? Вы можете использовать атрибуты, как вам нравится в XML. В каком смысле вам нужно, чтобы они были «атрибутами HTML», и для чего вы бы использовали DTD? Если вы считаете, что можете использовать HTML DTD, то, очевидно, ваш XML будет * быть * HTML (XHTML). –

+0

Я хочу использовать атрибуты id и class в специальном смысле, которые они используются в HTML. Я имею в виду, что я должен иметь доступ к элементам XML, используя функции getElementById и getElementbyClass. – fz300

ответ

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-элементов.

+0

Спасибо за отличный ответ, хотя атрибуты XML также могут быть сделаны специальными атрибутами ID с помощью DTD следующим образом: ' ]>' – fz300

0

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

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

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

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