我有这两个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,如第一个示例所示。
答案 0 :(得分:1)
作为XML,它们并不相同,因为属性和元素完全不同。
作为RDF / XML,它们是完全相同的,因为RDF / XML使用属性和元素的方式为这些示例中的那些提供了相同的含义。
虽然ABC
和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无关。