这两个xml等价吗?

时间:2015-09-15 09:26:56

标签: xml

我有这两个xml文档:

<rdf:Description rdf:about=""
    xmlns:GPano="http://ns.google.com/photos/1.0/panorama/"
  GPano:ProjectionType="equirectangular"
  GPano:UsePanoramaViewer="True"
  GPano:CroppedAreaImageWidthPixels="8000"
  GPano:CroppedAreaImageHeightPixels="4000"
  GPano:FullPanoWidthPixels="8000"
  GPano:FullPanoHeightPixels="4000"
  GPano:CroppedAreaLeftPixels="0"
  GPano:CroppedAreaTopPixels="0"
  GPano:PoseHeadingDegrees="0.0"/>

<rdf:Description rdf:about = "" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/">
  <GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer>
  <GPano:ProjectionType>equirectangular</GPano:ProjectionType>
  <GPano:PoseHeadingDegrees>0.0</GPano:PoseHeadingDegrees>
  <GPano:CroppedAreaImageWidthPixels>8000</GPano:CroppedAreaImageWidthPixels>
  <GPano:CroppedAreaImageHeightPixels>4000</GPano:CroppedAreaImageHeightPixels>
  <GPano:FullPanoWidthPixels>8000</GPano:FullPanoWidthPixels>
  <GPano:FullPanoHeightPixels>4000\</GPano:FullPanoHeightPixels>
  <GPano:CroppedAreaLeftPixels>0</GPano:CroppedAreaLeftPixels>
  <GPano:CroppedAreaTopPixels>0</GPano:CroppedAreaTopPixels>
</rdf:Description>​

它们是一样的吗?我可以看到有一些语法差异,但我不确定它们是否相同?

我的问题的原因是标准(https://developers.google.com/streetview/spherical-metadata)指定第二个版本是正确的,但是当我使用此站点添加xmp时:http://photo-sphere.appspot.com/它添加了xmp,如第一个示例所示。

2 个答案:

答案 0 :(得分:1)

作为XML,它们并不相同,因为属性和元素完全不同。

作为RDF / XML,它们是完全相同的,因为RDF / XML使用属性和元素的方式为这些示例中的那些提供了相同的含义。

虽然&#x41;&#x42;&#x43;ABC是完全不同的文本,但是等效的XML,所以这些示例具有完全不同的XML但等效的RDF。

RDF由描述资源(用URI标识)与其他资源或文字值(URI或字符串)以及也用URI标识的谓词之间的关系的语句组成。

RDF / XML使用命名空间和本地名称来提供压缩形式的URI。

因此,考虑到相对URI ""意味着&#34;此资​​源本身&#34;,我们从第一个文档获得的第一个语句是:

<> <http://ns.google.com/photos/1.0/panorama/ProjectionType> "equirectangular" .

(其中<>用于包含资源本身的URI,如果有的话,可以将其扩展为该资源的完整URI。

在第二个文档中,ProjectionType元素给出了声明:

<> <http://ns.google.com/photos/1.0/panorama/ProjectionType> "equirectangular" .

等等。无论哪种方式,它们都是相同的RDF。

RDF / XML的某些用途限制了哪种方法可以在哪里使用,但XMP没有。

那么,虽然直接回答你的问题&#34;这两个xml等价?&#34;是&#34; no&#34;,更相关的问题,&#34;这两个XML是等价的,就它们的使用方式而言?&#34;是&#34;是&#34;。

如果你可以在它们之间做出选择,我会赞成前者,除非你需要多个具有相同谓词的语句(不能用属性完成,因为你只能拥有每个名字中的一个)或者语句的复杂对象(需要更多的XML节点),然后属性是更简洁的形式。

答案 1 :(得分:0)

绝对不一样。在第一个例子中,根节点的子节点是属性,而在第二个例子中,根节点的子节点是元素。差异将变得明显,例如在验证模式或应用XPath或XSLT时。从技术上讲,存在很大差异。

但是,您的问题的目的可能是使用此类XML的应用程序是否存在语义差异。这取决于应用程序,并且没有直接的原因可以解释为什么一个结构将是正确的#34;而另一个则是&#34;错误&#34;。当然,未来的可扩展性和个人品味在XML的建模方式中起着重要作用。

(编辑后:)

Photosphere生成JPG图片,不是吗?因此,全景信息将作为二进制数据存储在JPG文件中。我猜你使用其他工具从JPG文件中将二进制数据提取到XML,因此如果必须有元素,则需要将该工具配置为创建XML元素,而不是属性。但是,其他答案表明差异与RDF无关。