Javascript 为什么XML不打算用作表示语言?
我对创建尽可能简单而不是更简单的web应用程序感兴趣。我的意思是,在我看来,我可以(*应该能够*)创建一个XML文档来表示我的应用程序的对象,使用CSS作为“表示层”,使用Javascript来操作对象 我想说的一部分是,在我看来,HTML通过将对象与表示格式混合在一起而混淆了应用程序,这不是CSS的要点吗HTML/XML:什么数据,CSS:如何表示数据,(JS:如何操作数据) 我*可以*使用XLST*将XML转换为XHTML,但是JS必须针对XHTML(表示元素)而不是XML(数据对象)进行编码,这增加了不必要的复杂性 我从程序员的角度出发,希望使用设计原则,例如将表示与数据分离(HTML/XML vs CSS)和面向对象编程。现在说HTML和CSS是“定义”表示层所必需的,这难道没有意义吗 我想要的评论是关于正确的编码方式,而不是当前标准的“修复” 这里有一个例子。我可以这样写: HTML/XHTML:Javascript 为什么XML不打算用作表示语言?,javascript,xml,oop,xhtml,presentation,Javascript,Xml,Oop,Xhtml,Presentation,我对创建尽可能简单而不是更简单的web应用程序感兴趣。我的意思是,在我看来,我可以(*应该能够*)创建一个XML文档来表示我的应用程序的对象,使用CSS作为“表示层”,使用Javascript来操作对象 我想说的一部分是,在我看来,HTML通过将对象与表示格式混合在一起而混淆了应用程序,这不是CSS的要点吗HTML/XML:什么数据,CSS:如何表示数据,(JS:如何操作数据) 我*可以*使用XLST*将XML转换为XHTML,但是JS必须针对XHTML(表示元素)而不是XML(数据对象)进行编
<ul class="folderTree">
<li class="fTreeItem"><img /><span class="fTreeItemName">Directory</span>
<ul class="fTreeItemContents">
...
</ul>
</li>
...
</ul>
在我看来,这是呈现数据的正确方式。你不同意吗?请解释一下
编辑:我的问题的基础在于一个事实:用户定义的标签不能用于HTML/XHTML,而B)JavaScript不是要与XML一起使用。 编辑2:另外,我不完全熟悉文档中如何处理多个名称空间。因此,如果有人能说明我是否可以通过使用XHTML文档并使用另一个名称空间包含我的XML代码/标记来实现我的目标…
除了即将发布的内容之外,您几乎可以使用任何您想要的元素。然后,您可以对其应用样式表,它将显示良好<tralala>Hello World!</tralala>
<style>
tralala {
display: block;
}
</style>
你好,世界!
特拉拉拉{
显示:块;
}
查看当前的web组件库,并可能使用XSL修改数据以匹配web组件。来自W3C的XML版本包括:
有上千种XML应用程序定义,以一种通用的方式表示不可能可视化的数据。HTML具有定义含义的元素和属性。它们被各种各样的客户端所理解,包括常见的可视web浏览器、搜索引擎索引机器人和屏幕阅读器。它有一些遗留的表示属性和元素,但它们大多已被删除或标记为要避免
您的自定义XML语言中的元素和属性可能比HTML中的元素和属性具有更具体的含义,但客户端无法理解它们的含义。您可以通过样式表为可视化用户处理这些问题,但不能很好地为搜索引擎、屏幕阅读器和其他用户服务。我假设您希望在浏览器中运行应用程序。浏览器呈现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”)
看一看灵感。XHTML是XML,因此XML可以用作表示语言。您应该查看一下您编辑中的Google事实
a
不完全正确。例如,如果您使用的是angularjs,那么您所使用的标记将非常好,您将有一个处理folderTree的指令,其中包含子标记的子指令。它可能无法在html验证器中进行验证,但它可以在所有现代浏览器(以及IE8+)中使用(术语可能有点不太合适,对angularjs来说相对较新)@MrMojoRisin,请不要使用代码记号
来突出显示软件名称。我不太明白您是如何得出javascript不适合与xml交互的结论的。XML只是一种表示数据的方式,就像json一样。为什么javascript不能与之交互?XML的优点是可以通过css进行样式化,而json首先必须是协同的
folderTree { display: block; }
folderTree item { display: list-item; }
folderTree name { display: inline; }
<tralala>Hello World!</tralala>
<style>
tralala {
display: block;
}
</style>