2016-01-22 3 views
1

Я иду из фона HTML/JavaScript/PHP и недавно начал учиться XML.Является ли XML более семантическим, чем HTML с классами/идентификаторами?

Я читал this excerpt от «Нет Чушь Веб-разработка XML с PHP», который включает в себя такое сравнение:

<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 - это, в основном, набор инструкций для рендеринга документов внутри веб-браузера; это не метод структурирования документов, чтобы выявить их смысл.


Автор сравнивает это 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)

+2

Я бы сказал, что класс html представляет собой конструкцию стиля. Он не должен использоваться для контекста данных. Вы можете использовать его так, как вы показали, но это было бы нестандартным и, следовательно, ограниченным использованием вне вашего личного домена. Кроме того, в отличие от тега xml, значение атрибута класса не ограничено xsd. –

ответ

1

Это интересный question.I'll дать вам мои два цента.

Я несколько лет назад перешел на XML, когда мне пришлось создать динамический веб-сайт, и у моего клиента не было доступа к базе данных (только для доступа к FTP). Что я, по сути, кодировал, был бэкэндом XML и PHP, который извлекал эту через синтаксический анализ SimpleXML.

В ретроспективе я считаю, что XML более семантически богаче HTML. Как отмечалось выше, класс html был конструкцией стиля. Я не помню, чтобы лично использовать/слышать кого-либо, используя классы или идентификаторы для целей, отличных от стилей или анимаций на основе CSS/JS.

Ключ в использовании XML через HTML с классами - это гибкость для его распространения. Для другого проекта обновление значений элементов XML из одной системы, а затем их чтение и отображение другой системой сделало многое более плавным. Кроме того, библиотеки разбора XML допускают ряд функций для разбора узлов.

Также важно отметить, что XML позволяет определять атрибуты. Это можно рассматривать как нечто похожее на классы и идентификаторы на HTML.

Кроме того, давайте не будем забывать, что RSS-каналы - это по существу XML, а не HTML с большим количеством тегов.

Поэтому, отвечая на ваш вопрос конкретно по поводу semantic, я определенно считаю, что у XML есть преимущество там.

TLDR: XML является более семантическим по мне

1

Вы правы, что с точкой зрения просто глядя на разметке, есть немного сделать разницу NONE между «содержательными» именами элементов в XML и HTML-класс /Я бы. Однако имейте в виду, что для XML существует множество технологий и инструментов, которые позволяют вам легко работать с именами элементов. Вы можете писать схемы и проверять их. Вы можете создавать схемы с помощью пространств имен. Вы можете извлекать структуры, используя простые выражения XPath. Все это намного сложнее с использованием HTML-подхода.

Итак, если у вас есть требования для захвата и обработки «значимых» структур, тогда XML является вашим другом. Если все, что вам нужно, это сделать снимок чего-либо, где вы можете сказать «это продукт», то, возможно, действительно, может быть, не такая большая разница.

Мой совет: Если вы храните и обрабатываете данные с использованием нескольких конвейеров публикации, XML, скорее всего, является намного лучшей отправной точкой. Если все, что вам нужно, это снимки захвата, которые будут доставлены потребителям на основе HTML, тогда «семантически обогащенный» HTML может быть проще.

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