2015-09-15 3 views
1

У меня есть эти два 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, как показано в первом примере.

+1

Не то же самое. Первый имеет только один тег со многими атрибутами; второй представляет те же данные, что и корневой тег со многими дочерними тегами. – duffymo

+0

@duffymo Спасибо, см. Мой обновленный вопрос. Как вы думаете? – mans

+0

Они разные, но оба являются «правильными». Атрибуты и элементы имеют разные значения, но оба они представляют данные. Атрибуты используются для захвата метаданных для вызывающего приложения; элементы захватывают данные и иерархические отношения между ними. – duffymo

ответ

1

В качестве XML они не совпадают, поскольку атрибуты и элементы совершенно разные.

В качестве RDF/XML они полностью совпадают, поскольку способ RDF/XML использует атрибуты и элементы, которые дают в этих примерах то же самое значение.

Очень похоже на то, что &#x41;&#x42;&#x43; и ABC - это совершенно другой текст, но эквивалентный XML, поэтому эти примеры имеют совершенно разные XML, но эквивалент RDF.

RDF состоит из инструкций, описывающих отношения между ресурсами (идентифицированных с помощью URI) и других ресурсов или литералов (URI или строки) и предикатов, которые также идентифицируются с помощью URI.

RDF/XML использует пространства имен и локальные имена для предоставления компактных форм URI.

Так, учитывая, что относительный URI "" означает «сам этот ресурс», первое заявление мы получаем от первого документа является:

<> <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 не поддерживает.

Итак, хотя прямой ответ на ваш вопрос «эти два xml-эквивалента?» «нет», более уместный вопрос: «Эти два эквивалента XML в терминах того, как они используются?» Да".

Если вы можете выбрать между ними, я бы предпочел бывшую, как если бы вам не потребовалось несколько операторов с одним и тем же предикатом (не может быть сделано с атрибутами, так как вы можете иметь только одно имя) или сложные объекты утверждение (требует дополнительных узлов XML), тогда атрибуты являются более сжатой формой.

0

Абсолютно не то же самое. В первом примере дочерние узлы корневого узла являются атрибутами, а во втором примере дочерними узлами корневого узла являются элементы. Разница станет очевидной, например. при проверке схемы или применении XPath или XSLT. Так что технически, есть большая разница.

Однако целью вашего вопроса может быть наличие семантической разницы для приложения, которое потребляет такой XML. Это зависит от приложения, и нет непосредственной причины, почему одна структура будет «правильной», а другая - «неправильной». Конечно, будущая расширяемость и личный вкус играют определенную роль в моделировании XML.

(После правки :)

Photosphere генерирует JPG изображение, нет? Таким образом, информация о панораме будет храниться как двоичные данные в файле JPG. Я думаю, вы извлекли эти двоичные данные из файла JPG в XML с помощью другого инструмента, поэтому, если вы должны иметь элементы, этот инструмент необходимо настроить для создания элементов XML, а не атрибутов. Однако другие ответы указывают на то, что разница не имеет значения для RDF.

+0

Не используйте XPath или XSLT для обработки RDF/XML, если вы не учли, как он может обрабатывать атрибуты и элементы как имеющие то же значение. –

Смежные вопросы