为什么XML不打算用作表示语言?

时间:2014-06-26 19:01:13

标签: javascript xml oop xhtml presentation

我对创建尽可能简单且不简单的Web应用程序感兴趣。我的意思是,在我看来,我可以(*应该能够*)创建一个表示我的应用程序对象的XML文档,使用CSS作为“表示层”,使用Javascript来操作对象。

我所说的部分内容是,在我看来HTML通过将对象与表示格式混合来混淆应用程序,这不是CSS的重点吗? - HTML / XML:什么数据,CSS:如何呈现数据,(JS:如何操纵数据)

我*可以*使用XLST将XML转换为XHTML,但是JS必须针对XHTML(表示元素)而不是XML(数据对象)进行编码,这会增加不必要的复杂性。

我是从程序员的角度出发,希望使用设计原则,例如将表示与数据(HTML / XML与CSS)和面向对象编程分开。说目前的HTML和CSS是否“定义”表示层是不是没有意义?

我正在寻找的评论是关于正确的编码方式,而不是用当前标准“修复”。

这是一个例子。我可以这样写:

HTML / XHTML:

<ul class="folderTree">
    <li class="fTreeItem"><img /><span class="fTreeItemName">Directory</span>
        <ul class="fTreeItemContents">
            ...
        </ul>
    </li>
    ...
</ul>

...但如果我能做到这一点,可以更好地满足设计原则:

<folderTree>
    <item><img /><name>Directory</name>
        <folderTree>
            ...
        </folderTree>
    </item>
</folderTree>

并包含以下CSS:

folderTree { display: block; }
folderTree item { display: list-item; }
folderTree name { display: inline; }

在我看来,这是呈现数据的正确方法。你不同意吗?请解释......

编辑:我的问题的基础在于以下事实:a)用户定义的标签不能用于HTML / XHTML,b)javascript不适用于XML。

编辑2:另外,我并不完全熟悉如何在文档中处理多个名称空间。因此,如果有人能够通过使用XHTML文档并使用其他命名空间包含我的XML代码/标记来实现我的目标,那么有人可以阐明...

4 个答案:

答案 0 :(得分:2)

HTML具有定义含义的元素和属性。它们被各种各样的客户所理解,包括常见的可视网络浏览器,搜索引擎索引机器人和屏幕阅读器。它有一些遗留的表示属性和遗留的元素,但它们大多被删除或标记为可以避免。

您的自定义XML语言可能具有比HTML中更具体含义的元素和属性,但它们不会成为客户理解的含义。您可以使用样式表为视觉用户处理此问题,但不会为搜索引擎,屏幕阅读器和其他用户提供良好的服务。

答案 1 :(得分:2)

我假设你想在浏览器中运行你的应用程序。浏览器用于呈现UI的语言是HTML / XHTML。如果您想拥有自己的语言来定义UI,则需要将其翻译成浏览器能够理解的内容。这可以在JIT或页面加载时完成。

我同意你的观点,运行XSLT会使javascript更加复杂。但你可以做的是在javascript中编写一个“解释器”(或“渲染引擎”)。因此,您的应用程序将使用XML + CSS + JavaScript编写,但不是在裸浏览器上运行它 - 您将使用一个库,该库将使用“HTML指令”呈现您的XML-UI。

它可以像XML节点替换一样简单,因此当您在XML中说 - 它将以HTML格式生成。根据您将javascript与演示文稿定义的连接方式,您需要提供某种适用于javascript访问的适配器。例如,您可以“拦截”jQuery $(...)调用并将$(“folderTree”)替换为$(“div.folderTree”)。但是如果您已经使用正确的页面对象访问UI元素,那么可以将翻译逻辑封装在此页面对象中。即PageObject类可以足够聪明,知道当你请求treeFolder节点时,它需要查找$(“div.treeFolder”)而不是$(“treeFolder”)。

看一下angular.js's directives的灵感。

答案 2 :(得分:0)

在即将到来的web componentscurrent libraries旁边,您几乎可以使用任何您想要的元素。然后,您可以将样式表应用于它,它将显示正常。

<tralala>Hello World!</tralala>

<style>
tralala {
    display: block;
}
</style>

查看当前的Web组件库,并可能使用XSL修改数据以匹配Web组件。

答案 3 :(得分:0)

从W3C开始,XML的design goals为:

  1. XML应该可以在互联网上直接使用。
  2. XML应支持各种各样的应用程序。
  3. XML应与SGML兼容。
  4. 编写处理XML文档的程序应该很容易。
  5. XML中的可选功能数量应保持绝对最小值,理想情况下为零。
  6. XML文档应该易于理解并且相当清晰。
  7. 应该快速准备XML设计。
  8. XML的设计应该是正式和简洁的。
  9. XML文档应易于创建。
  10. XML标记中的Terseness具有最低限度的重要性。
  11. XML首先是关于Well-Formed XML文档,然后是Valid XML Documents到特定的XML Application定义,即XML Document对XHTML 1.0版有效。

    有数以千计的XML应用程序定义,代表不可能以通用的方式显示数据。