1

我想在我的 xml 数据中使用标准的 HTML id 和类属性。我想这样做是为了能够聚合不同组和组合中的元素。如果我在我的 xml 文档中使用 HTML DTD 就可以了。任何帮助将不胜感激。

4

2 回答 2

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 的解释器。

于 2013-08-18T20:11:28.023 回答
0

没有 DTD 警察检查 XML 词汇设计是否正常,因此无论您做什么几乎都可以。但是,很难解释您想做的事情是可以的,但不了解您为什么担心它可能不可行。这是一种分散的方法来解释为什么你不需要担心。

从法律上讲,W3C 定义的 HTML DTD 的使用受 W3C 授予的任何许可的约束;可以肯定的是,重用 DTD 或其中的一部分没有法律障碍(HTML 4.01 和 XHTML 1.0 已经精心模块化 DTD,旨在实现重用)。但我不是律师,这不是法律建议。

从道德上讲,不反对在您的词汇表中使用它们在 HTML 中的相同含义的 id 和 class 属性。有些人可能会皱起鼻子,但他们的担忧可能是审美或政治问题,而不是道德问题。

从技术上讲,如果您只想使用 id 和 class 属性,而不是 HTML DTD 的任何较大部分,那么重用 HTML DTD 不太可能给您带来太多优势。模块化是复杂的,并且要使其工作涉及到许多对某些人有吸引力而对其他人不那么有吸引力的繁琐工作。因此,重用单个 HTML 属性的最简单和最常见的方法就是在您的模式中声明适当名称的属性,并在您的文档中指定它们具有 HTML 赋予它们的含义。

于 2013-08-18T18:32:25.453 回答