我来自HTML
/ JavaScript
/ PHP
背景,最近开始学习XML
。
我正在阅读"使用PHP" 进行无意义的XML Web开发this excerpt,其中包括此比较:
<div>
<div>
<h2>Product One</h2>
<p>Product One is an exciting new widget that will simplify your life.</p>
<p><b>Cost: $19.95</b></p>
<p><b>Shipping: $2.95</b></p>
</div>
</div>
从计算机的角度来看一下这个 - 无可否认的简单 - 代码示例。人类当然可以阅读这个文档并进行必要的语义跳跃来理解它,但计算机却无法理解。 ....
试图破译这个文档的计算机程序(甚至一些人)将无法进行理解它所需的语义跳跃。计算机只能将文档呈现给具有与每个标记关联的样式的浏览器。 HTML主要是一组用于在Web浏览器中呈现文档的指令;它不是一种结构化文件的方法来表达它们的含义。
然后,作者将此与XML
进行比较:
如果上述文档是用XML创建的,它可能看起来像这样:
<productListing title="ABC Products">
<product>
<name>Product One</name>
<description>Product One is an exciting new widget that will simplify your life.</description>
<cost>$19.95</cost>
<shipping>$2.95</shipping>
</product>
</productListing>
理论上,我们应该能够查看任何XML文档,并立即了解正在发生的事情。在上面的示例中,我们知道产品列表包含产品,并且每个产品都有名称,描述,价格和运费。你可以肯定地说,每个XML文档都是自我描述的,人类和软件都可以读取。
我得到了作者的学位。当然,计算机无法从HTML
中辨别出含义,没有上下文。
然而,我绝不会指望HTML
以这种方式编写。相反,我希望HTML
使用classes
和/或ids
提供必要的上下文更像:
<div class="productListing">
<div class="product">
<h2 class="name">Product One</h2>
<p class="description">Product One is an exciting new widget that will simplify your life.</p>
<p class="cost"><b>Cost: $19.95</b></p>
<p class="shipping"><b>Shipping: $2.95</b></p>
</div>
</div>
鉴于这个例子,我的问题是:
XML
是否比使用HTML
为其包含的数据提供上下文的classes/ids
更具语义性?
(注意我简化了代码示例以避免TL; DR)
答案 0 :(得分:1)
这是一个有趣的问题。我会给你两分钱。
几年前,当我不得不构建一个动态网站而我的客户端无法访问数据库(只是FTP访问)时,我跳到了XML上。我本质上编写的是一个XML后端和PHP,它通过以下方式获取SimpleXML解析。回想起来,我认为XML在语义上比HTML更丰富。正如上面提到的评论,html类是一个样式构造。我不记得亲自使用/听到任何人使用类或ID用于基于CSS / JS的样式或动画以外的目的。
使用XML而不是HTML与类的关键是可以灵活地使用它。对于另一个项目,从一个系统更新XML元素的值,然后让它们由另一个系统读取和显示,使得很多东西更顺畅。另外,XML解析库允许通过节点解析许多函数。
另外值得注意的是,XML允许您定义属性。这可以被视为类似于HTML的类和ID。
另外,我们不要忘记RSS源本质上是XML,而不是带有更多标签的HTML。
因此,特别针对语义回答您的问题,我绝对认为XML在那里具有优势。
TLDR :根据我的说法,XML更加语义
答案 1 :(得分:1)
你是正确的,就仅仅看标记而言,XML&#34;有意义的&#34;之间没有什么区别。元素名称和HTML类/ id。但是,请记住,对于XML,有一组技术和工具可以让您轻松使用元素名称。您可以编写模式并对其进行验证。您可以使用命名空间来编写模式。您可以使用简单的XPath表达式提取结构。使用HTML方法所有这一切都要困难得多。
因此,如果您有要求捕获和处理&#34;有意义的&#34;结构,然后XML是你的朋友。如果你想要的只是快照一些你可以说的东西&#34;这是一个产品&#34;,那么也许真的可能没有那么大的差异。
我的建议是:如果使用多个发布管道存储和处理数据,XML很可能是一个更好的起点。如果您想要的只是捕获将传递给基于HTML的消费者的快照,那么&#34;语义丰富&#34; HTML可能是更容易的方法。