我对创建尽可能简单且不简单的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代码/标记来实现我的目标,那么有人可以阐明...
答案 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 components和current libraries旁边,您几乎可以使用任何您想要的元素。然后,您可以将样式表应用于它,它将显示正常。
<tralala>Hello World!</tralala>
<style>
tralala {
display: block;
}
</style>
查看当前的Web组件库,并可能使用XSL修改数据以匹配Web组件。
答案 3 :(得分:0)
从W3C开始,XML的design goals为:
XML首先是关于Well-Formed XML文档,然后是Valid XML Documents到特定的XML Application定义,即XML Document对XHTML 1.0版有效。
有数以千计的XML应用程序定义,代表不可能以通用的方式显示数据。