我确信有一些使用XML的方法可以做到这一点。 世界上的每一个问题都可以用XML解决。
-
11 只是对“一切都可以用XML解决”的一点评论:我曾经遇到过一些测试设备,它们能够将一些数据结构修改为具有明文解码属性的人类可理解树,然后再编码为被测试设备的二进制数据结构。 导出/保存数据以供以后使用的唯一方法是XML,但它只是将二进制转储作为十六进制字符串。这是没有用的,因为将二进制转存作为普通二进制文件将是一种更有用的格式,不需要在XML和任何其他所需格式之间进行转换。 – 贾斯特姆 4月28日15:27 -
9 哇…XML/XSLT和XHTML。 我已经有将近20年没有想过这些了。 我不认为XML输给了XHTML,因为在我使用web服务的经验中,XML仍在继续。当然,JSON已经大大削弱了XML的吸引力,但XML仍在遗留系统中使用,我遇到了仍在使用它的API端点。 我认为XHTML失去了前端开发人员对HTML5的青睐,因为XHTML没有提供HTML5可以做的任何有用的东西,而且HTML5也没有那么严格。 全面披露:我花了很多时间研究XML/XSLT的复杂性。 我真的很喜欢。 – 安德鲁·沃森 4月28日16:15 -
23 XHTML不是一个XML应用程序吗? 也就是说,如果一个结构是XHTML,那么根据定义它也是XML。 – 戴夫 4月28日16:37 -
12 我最喜欢的理论是:XHTML输给了HTML5,主要是因为(a)Internet Explorer长期不支持XHTML; (b) 支持XHTML的Firefox不支持渐进式渲染; (c) 人们害怕黄屏死机,因为在黄屏死因中,一个语法错误就可能完全阻止页面的呈现,而没有工具生成格式良好的XHTML–HTML是通过字符串串联生成的,而没有太多注意正确的语法,而由浏览器来修复错误。 不过,我不确定能否用消息来源证实这一点。 – 用户3840170 4月28日19:59 -
9 什么,没有人提到“XML就像暴力”? “XML就像暴力:如果它不能解决你的问题,你就没有充分利用它。” — 属性。 到“slashdot via rust”。 “XML就像暴力。 当然,乍一看,这似乎是一个快速而简单的解决方案,但随后它就会失控,陷入彻底的混乱。” — 萨科斯 – 吉迪斯 4月29日15:25
11答案
-
4 你关于“这很好,但没有实际价值”的评论正是我想的。 我认为XHTML没有得到充分利用,或者(再一次)它对人们来说太开放了,或者利用得不够好。 我记得我花了很多时间学习SGML、XML和XSLT,并认为这确实是一种很好的方法,尤其是将所有内容放在一个地方并将其呈现为多种不同类型的格式,与此同时,现代浏览器仍在努力将简单的网页呈现为打印文档:/ – 诺埃尔·怀特摩尔 4月28日18:53 -
18 此外,它成为了一种宗教,这对它不利——即使在没有意义的情况下,它也倾向于使用110%的XML。 将函数式编程语言作为转换机制的想法很有意义。 函数式编程语言的思想 自身必须编码为XML (即XSLT)(没有定义的“标准”语法)是愚蠢至极的,只有一个喝了一加仑可乐的人才会想到推广它 能够 为XML生态系统的利益而接受。) – 达维德巴克 4月28日19:21 -
三 @Nelson它与极其复杂的HTML解析规则有关,其中充满了异常和隐式状态转换,使得一些DOM树无法表示为标记。 在XHTML中,每个DOM树都有一个明确的序列化,这是无损的(直到文本节点规范化)。 通过XHTML而不是HTML进行遍历序列化绝对可以避免这个问题。 4月29日2:01 -
2 -
1 @davidbak在XSLT出现之前,有多种用于SGML的转换语言,也有多种用于XML的转换语言(包括基于Scheme或Tcl的语言),但它们都没有XSLT的吸引力(显然,它们都没有这么长的使用寿命)。 XSLT从W3C的努力中受益匪浅,但能够对文档和样式使用相同的编辑器也有好处,当您喝够了Kool-Aid之后,使用XSLT生成XSLT就很方便了。 任何人在XSLT紧凑语法方面的努力都没有取得任何进展。 – 托尼·格雷厄姆 4月30日16:13
假设 稳健性原则 (“做什么要保守,接受别人的什么要自由”),人们认为用mimetype为XHTML提供服务的缺点太多,好处太少,这实际上会触发XHTML解析,因为这意味着单个未加密或键入的字节可能会导致整个页面无法访问, 用户盯着一个解析错误。 如果发现无效RSS提要很常见,那么您需要一些允许的内容,例如 通用馈线分析器 对于Python的模块,在人们习惯于使用字符串处理模板的语言中严格要求有什么希望? (在那段时间里,我确实研究了在加载时强制实现良好格式的模板引擎( 元史 这是我记忆中的),作为对Rust编译时间严格性的热爱的一部分,但没有发现任何东西比它慢了一个数量级。) XHTML 2 试图打破与以前的HTML和XHTML版本的兼容性,比如替换 <br> 具有 <l> 这是一个显式行 …生态系统普遍拒绝的东西。
-
2 似乎过去/现在仍然存在这样一种心态,即不兼容的HTML是完全有效的,浏览器应该理解完全的垃圾(例如浏览器试图解析输出到同一页面的两组HTML文档)。 我觉得奇怪的是,浏览器开发人员对这种情况无限期地继续下去感到高兴。 你提到的例子 <br> (从我的角度来看) <br> 到 <br/> 然后返回到 <br> 似乎再次违反了标记系统的整体概念,比如他们不知道或不知道如何在XML中表示换行符。 – 诺埃尔·怀特摩尔 4月28日23:25 -
27 “我觉得奇怪的是,浏览器开发人员对这种情况很满意”——他们并不满意,但如果他们的浏览器不能理解完全的垃圾,而其他浏览器可以,他们的浏览器将失去市场份额。 幸运的是,过了一段时间,他们将完整垃圾的确切意义标准化了,现在每个人都很高兴:) – 蒿属植物 4月29日0:07 -
三 -
1 -
7 你必须记住,浏览器是其用户的代理,用户通常只是想阅读网页。 像所有软件一样,我们应该期望它尝试做用户想要的任何事情。 对于一个信息性网页(虽然不一定是一个web应用程序),用户希望它能尽可能地理解所抛出的任何东西。读者宁愿看到一些东西,即使是部分乱码,也不愿意看到任何东西。 由于这种浏览器行为,他们看到看起来正确但实际上具有误导性的内容的可能性非常低。 – bdsl公司 4月29日12:55
-
10 只是为了记录。 Michael Kay编写了XSLT处理器Saxon,这是我近十年来的go-to实现。 他还努力解决了缩放问题,因为XSLT悄悄地假设您可以将整个输入文档保存在内存中(对于Java实现,此时所需的内存大约是磁盘上文件大小的十倍),将XML作为一个需要更少内存的流来处理, 但这只是在商业版本中,唉,我们不需要足够的钱来购买。 如果有人知道这段历史,那就是他 🙂 4月29日20:52
让整个网页在服务器上以编程方式创建HTML(可能使用某种模板引擎) AJAX:有一个固定页面,然后在单独获取数据后更新浏览器中的HTML XML/XSLT:从XML API获取数据,然后与XSLT结合生成HTML页面,以便在浏览器中呈现。
浏览器中支持XML和XSLT的大量额外工作 网站创建者必须同时使用三种不同的语言(HTML、XML和XSLT),这三种语言表面上都很相似 XSLT文件包含分布在XSLT处理中的HTML标记。 这很难阅读 一个小错误会导致文档无效,并且无法渲染 很难在一个页面上组合来自多个源的数据
-
2
XML格式
XHTML(XHTML)
随着时间的推移添加的所有垃圾 调整语法以清理XML 严格关注标记 将所有显示生成移到CSS中 限制交互元素的混合(又名JS)
HTML5
XSLT等。
-
2 +1表示谈论纯数据方面。 我只是听说了xml和xsl用于生成网页的想法。。。。。。。 这看起来确实需要很多工作 😜 我记得xml是以web和web服务为中心的应用程序的一个出色的数据集成点,在那一天,它的速度一定输给了json – 迈克·M 4月30日2:21 -
1 我认为JSON战胜XML的主要原因是XML更加冗长(您需要围绕所有内容使用匹配的结束标记),因此也更加脆弱(因为结束标记可能是错误的)。 这被“验证一切”人群视为一个特性,但“容忍一切”人群则认为这是一个错误,HTML(不包括XHTML)一直是后者。 即使在验证可能更有益的数据方面,冗长也是其缺点,无论是在脆弱性方面还是在更大的文档方面。 – 米拉尔 4月30日6:02 -
-
-
1
我记得在XHTML被广泛采用之前的一个过渡时期,一些主要网站开始部署由于浏览器支持不足而无法在人们的机器上呈现的XML网页。
一个语义XML文档,用一组自定义元素编写,这些元素表示您想要显示的原始数据; 一个XSLT样式表,可以将这些数据转换为构成网页的表示元素,使用 <? xml样式表?> 处理指令。 (该愿景还有一个变体,其中转换生成的目标文档将是XSL-FO.Yikes。)
实施速度不快; XSLT是一种对整个文档重新排序的转换,因此您丢失了渐进式呈现; 除了由于XML格式良好错误(老实说,我认为这被夸大了)而导致页面中断的问题之外,XSLT中的任何错误或浏览器兼容性问题都很有可能使整个页面立即完全无法使用; 在这种设置中,文档模型会如此不同,以至于许多抄袭CSS,尤其是作者想要保留的JS都无法工作; 当您开始使用XSLT时,它感觉超级强大和优雅,但当您开始用它制作网页这一平凡的工作时,单调的现实是它远不如标准模板语言实用。 管理页面中所有匹配项的顺序很快就变成了一项繁琐的工作,如果没有真正的编程语言,那么最终会出现一些粗鲁的XPath表达式,从而笨拙地尝试字符串处理。 特别是当浏览器仍然限于XSLT1.0时。
Microsoft Internet Explorer 6没有正确处理,因此没有人可以
可扩展标记语言(XML)是本文档中完整描述的SGML的子集。 它的目标是使通用SGML能够以HTML现在可能的方式在Web上提供、接收和处理。 XML的设计目的是易于实现,并与SGML和HTML互操作。
在这方面,我们有一个强烈的政治现实需要处理 大型浏览器制造商第一次注意到了XML和 他们共同提出了一个强烈的要求:彻底处理错误 确定性,浏览器不以卓越为基础进行竞争 处理损坏的文件。 据观察,如果他们愿意 要做到这一点,他们可以做到; 但随后指出这是 标准存在的确切原因-编纂共享的期望实践 竞争对手之间。 无论如何,如果我们希望XML在 Web上,很难抛出来自 M&N回到了他们的脸上。
事实上,ERB上的每个人基本上都同意M&N的 目标是,我们永远不希望XML用户代理遇到 WF出错,然后继续进行,好像一切都很好。我们的分歧 重点是如何使用规格机器来实现这一点。
一个 标记语言 是为了写作 文本 具有额外功能的文档,如字体样式(粗体/斜体)、超链接、图像、列表或节标题。 一个 数据序列化语言 用于代表 数据 对象,其中可能包含数字、字符串、二进制blob或其他对象。 为了方便起见,这种语言可以表示为人类可读的文本,但数据本身不需要在概念上 是 文本。
XML作为数据序列化语言
<? xml version=“1.0”encoding=“utf-8”?> <采购订单xmlns:xsi=“ http://www.w3.org/2001/XMLSchema-instance “xmlns:xsd=” http://www.w3.org/2001/XMLSchema “xmlns=” 网址:http://www.cpandl.com "> <收货方名称=“Teresa Atkinson”> 主街1号线 <城市>任何城镇</城市> <州>西澳州 <邮政编码>00000 </收货方> 2001年6月27日星期三 <项目> <订单项> 小工具S <说明>小部件</Description> <单价>5.23 <数量>3</数量> <LineTotal>15.69</LineTotal> </OrderedItem> </项目> <小计>15.69 <运费>12.51</运费> <总成本>28.2 </采购订单>
{ “收货方”:{ “姓名”:“Teresa Atkinson”, “Line1”:“1 Main St.”, “城市”:“AnyTown”, “州”:“WA”, “邮政编码”:“00000” }, “OrderDate”:“2001年6月27日,星期三”, “项目”:{ “OrderedItem”:{ “ItemName”:“小工具S”, “说明”:“小部件”, “单价”:5.23, “数量”:3, “LineTotal”:15.69 } }, “小计”:15.69, “运费”:12.51, “总成本”:28.2 }
这是36% 更短的 而不是XML文档。 字符串文字(带引号)和数字文字(不带引号)在句法上有区别。 XML是字符串类型的,因此缺乏区分数字的方便方法 123 从字符串 "123" ,或a 无效的 空字符串中的值 "" .
XML作为标记语言
XHTML的严格弊大于利
向后兼容性
浏览器支持
SGML非常酷(就像隐式结束标记一样),但在CPU和内存周期上很昂贵,所以最初的HTML(可能高达3.2版)有点“轻量级SGML”。 虽然SGML的想法是一个内容模型和严格的语义“标记”,但使用HTML的人使用标记来进行特定的呈现,而不是标记特定的元素(例如“让我们从 <h3> ,因为 <h1> 对我的口味来说太大了”)。 当时的HTML在很大程度上是“标记汤”(只是一个(大部分)平衡的开始和结束标记的任意集合)。 我的猜测是,人们想要更多的结构,回到SGML的想法,发明了XHTML(与此同时,XML被发明为SGML中的一个子集,用于更轻松的使用),希望在“标记汤”中恢复正确的结构。 事实上,HTML4.0或更高版本已经朝着这个方向发展了。 我还认为XHTML主要是通过CSS进行样式化的,而人们仍然可以依赖默认样式(如经典HTML)。 HTML5通常与“繁重的脚本”(以及各种胡说八道的IMHO)结合在一起,您可以为几乎任何元素指定任何语义。 这涉及到DOM(文档对象模型),允许脚本读取和写入整个“文档”(有时也会导致糟糕的性能)。 任何文本都可以是一个按钮(例如),您可能会严重滥用元素,导致浏览器及其工具混淆(“为什么我的密码管理器不能用于站点XY?”)。 XSLT在另一种技术中被定义为应用于正确结构的文档(浏览器实现仍然不同)。 也许HTML5可以用“标记失去了意义”来概括,因为您可以添加任何您喜欢的标记名,并通过脚本为其附加运行时语义(您知道有趣的页面,其中一个按钮从您的鼠标指针“逃走”?)