我想在我的xml数据中使用标准的HTML id和class属性。我想这样做是为了能够聚合不同组和组合中的元素。如果我在我的xml文档中使用HTML DTD就可以了。任何帮助都将受到高度赞赏。
答案 0 :(得分: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的解释器。
答案 1 :(得分:0)
没有DTD警察检查XML词汇表设计是否正常,所以无论你做什么,你几乎肯定都行。但是,很难解释你想做什么是好的,但没有理解为什么你担心它可能不好。这是一种散射方法,用于解释您不必担心的原因。
从法律上讲,W3C定义的HTML DTD的使用受到W3C所赋予的任何许可的约束;几乎可以肯定的是,重用DTD或其中的一部分没有法律障碍(HTML 4.01和XHTML 1.0已经仔细模块化了旨在实现重用的DTD)。但我不是律师,这不是法律建议。
在道德上,没有人反对在词汇表中使用id和class属性,这与HTML中的含义相同。有些人可能会皱鼻子,但他们的担忧可能是审美或政治,而不是道德。
从技术上讲,如果您只想使用id和class属性,而不是HTML DTD的任何较大部分,那么重用HTML DTD不太可能为您带来更多优势。模块化是复杂的,并且使其工作涉及许多吸引一些人而不是其他人的那些繁琐的工作。因此,重用单个HTML属性的最简单和最常用的方法是在模式中声明适当名称的属性,并在文档中指定它们具有HTML给出的含义。