2016-01-22 254 views
1

我来自HTML/JavaScript/PHP背景,最近开始学习XMLXML是否真的更具语义,即带有class/id的HTML?

我读this excerpt“用PHP没有废话XML Web开发”,其中包括这个比较:

<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创建的,它可能看起来有点像这样:

<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文档,并且可以立即理解发生了什么。在上面的示例中,我们知道产品列表包含产品,并且每个产品都有名称,说明,价格和运费。您可以正确地说,每个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)

+2

我会争辩说,一个html类是一个样式构造。它不应该用于数据上下文。你可以按照你所显示的方式使用它,但它不是标准的,因此在你的个人领域之外使用有限。另外,与xml标签不同,类属性的值不受xsd的限制。 –

回答

1

这是一个有趣的question.I'll给你我的两分钱。

几年前,当我不得不建立一个动态网站,并且我的客户端无法访问数据库(只是FTP访问)时,我跳到了XML。我基本编码的是一个XML后端和PHP,它提取了这个通过SimpleXML解析。

回想起来,我认为XML在语义上比HTML更丰富。正如上面所指出的,html类是一个样式构造。我不记得亲自使用/听到任何人使用类或ID为基于CSS/JS的样式或动画以外的目的。

在类中使用XML over HTML的关键是能够灵活地将其扔掉。对于另一个项目,从一个系统更新XML元素的值,然后让它们读取并显示在另一个系统上,可以使许多事情变得更加流畅。另外,XML解析库允许通过节点解析许多函数。

另外需要注意的是,XML允许您定义属性。这可以被看作类似于类和HTML的东西。

另外,我们不要忘记,RSS提要基本上是XML,而不是带有更多标签的HTML。

因此,具体回答你的问题语义,我绝对认为XML在这方面有优势。

TLDR:XML是更根据我语义

1

你是正确的,在刚刚看的标记而言,很少有做HTML类XML的“有意义”的元素名称之间无差异, /ID。但是,请记住,对于XML,有一组技术和工具可让您轻松处理元素名称。您可以编写模式并根据它们进行验证。您可以使用命名空间来撰写模式。您可以使用简单的XPath表达式来提取结构。所有这些对于HTML方法来说都非常困难。

所以如果你有捕获和处理“有意义”的结构的需求,那么XML就是你的朋友。如果你只想拥有可以说“这是一款产品”的东西的快照,那么或许真的可能没有那么大的差别。

我的建议是:如果您使用多个发布管道存储和处理数据,那么XML很可能是一个更好的起点。如果所有你想要的都是捕捉快照,这些快照将被传递给基于HTML的使用者,那么“语义丰富”的HTML可能是更简单的方法。

相关问题