xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Элементы или атрибуты?

На страницу 1, 2  След.

Автор Сообщение
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[4687] Вт Июл 15, 2003 18:20
Элементы или атрибуты?
Компания Intersoft Lab делает полезное дело, переводя на русский язык статьи по XML. Но недавно они перевели несколько спорную статью Дэвида Мертца "Элементы или атрибуты?".

Основная проблема в том, что автор утверждает:

Цитата:

В этой статье было показано, когда желательно использовать вложенные элементы, а когда атрибуты.


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

Цитата:

Поэтому, атрибуты и неупорядочены, и потому являются более интуитивным выбором



Очень интересная мысль. Теперь я понимаю, почему многие, особенно начинающие программисты, склоняются к использованию атрибутов. Может быть, я тоже бы выбрал атрибуты если бы не использовал XML ранее.

До этого я знал только один весомый аргумент в пользу атрибутов: в моделях DOM и SAX сложно обрабатывать структуру, составленную из элементов. Но на это возразить достаточно просто: надо использовать "правильные" инструменты. В данном случае (обработка XML) ими являются XSLT или DOM с XPath.

Кстати, при использовании XPath-выражения типа "section/title" не имеет значения, как упорядочены ноды внутри "section".

Цитата:

Если же вы уверены, что объект данных будет оставаться уникальным, придерживайтесь атрибутов



Проблема в том, что всё течёт и всё меняется, и то, что на данный момент кажется неизменным, через некоторое время изменится. Например, рассмотрим код автора:

Цитата:

< contact name="Chieu Win" telephone="555-8888" age="44" />


Если потребуется различать FirstName и SecondName в name, или выделять CountryCode, AreaCode в telephone, то у автора будут большие проблемы.

Из жизни. Год назад я видел подобный атрибуто-ориентированный XML. В процессе объяснения, что решение плохое и сулит проблемы, я обратил внимание на строки в атрибутах и спросил разработчика, а что он будет делать, когда придётся выдавать их на нескольких языках. На это было отвечено, что система принципиально одноязычная. Так вот, менее чем через год, языки в системе появились, и им пришлось делать корявый довесок к формату.

Кстати, аргумент в пользу атрибутов был: смотри, как красиво такой XML показывается в Internet Explorer, не то, что вариант с атрибутами.

Вместо того, чтобы пихать всё в атрибуты, я рекомендую использовать следующий подход:

Цитата:

Если же вы уверены, что объект данных будет оставаться уникальным, придерживайтесь атрибутов


Вы будете смеяться, но это - цитата из статьи. Надо только понять, что "объект данных уникален" означает: объект данных есть ID, IDREF, ENTITY или элемент перечисления.

Напоследок процитирую Крэга Лармана (книга "Применение UML и шаблонов проектирования"):

Цитата:

Если у вас есть какие-либо сомнения, то лучше создайте отдельный концептуальный класс, а не атрибут

Paranorm
Студент

Зарегистрирован: 24.04.2002
Сообщения: 81

Посетить сайт автора
[4689] Ср Июл 16, 2003 01:01
In My Honest Opinion
Коли это "мнения", то изложу свое honest opinion.
Совсем недавно обнаружил, что в моих документах стало намного больше элементов по сравнению с аттрибутами.

Раньше я старался подходить "научно", искал аргументы в пользу одного или другого подхода. Похоже, с опытом у меня вырабатался подход к решению этих вопросов, и в этом подходе гораздо больший приоритет отдается элементам.

К примеру, в аттрибутах у меня остался идентификатор документа и дата последней модификации. Все остальное представлено элементами.
andy taler
Гость




[4690] Ср Июл 16, 2003 08:33
re
Что Мертц (там вообще тихий ужас - не понимаю, как вообще умные люди "такое" могли выбрать для перевода?), что Olpa, что Paranorm - типичный "узко-ego-programmer" взгляд:

>> в моделях DOM и SAX сложно ОБРАБАТЫВАТЬ (выделяем это слово) структуру, составленную из элементов

>> Теперь я понимаю, почему многие, особенно начинающие ПРОГРАММИСТЫ (опять выделяем)...

Может, кроме Обработки и Программистов, XML с миром более ничего не связывает? Ибо, если подобным воззрениям следовать, то, вероятно, и даже XML-schemа сейчас не есть правильный XML-язык?

>> Может быть, я тоже бы выбрал атрибуты если бы не использовал XML ранее.

Т. е., name и type в конструкции <xs:element name="a" type="b"/> следовало делать элементами ?...

Господа, XML-языки и всякие <xxx name="a" type="b"> выбирают и конструируют СОВСЕМ из других (и не-програмистских) принципов - и нет там ничего общего с тем, о чем рассуждают Мертц или Olpa или Paranorm. Ибо, иначе, к неправильным "XML-языками" надо бы относить и RDF/XML, и Soap, и NewsML да и вообще "все остальные ML". Так? Примеры нужно приводить?

taler: Конструирование XML-языка (XML-дизайн) - сложнейшая тема, в которой тысячи нюансов (онтология, семантика языка, логика языка, модель/интерпретации и т.д и т.п.., - тогда как понятия "обработка и инструменты" - пусть и не на последних местах, но явно не на первых - ведь сегодня они такие, завтра - совсем другие!).

a) атрибуты или элементы - лишь следствие чего-то еще, но вовсе не самоцель.
b) и как можно вообще ставить вопрос "атрибуты или элементы", не привязываясь к конкретной задаче и не спозиционировав свой взор на конкретном (хотя бы кило-)метре айсберга... (из мини-статьи "Элементы и атрибуты (ч. I - ч.II)" от 30 авг. 2002 http://xmlhack.ru/forum/xml/posting.php?mode=quote&p=1862)
Vitaly Ostanin
Гость




[4818] Ср Авг 06, 2003 20:21
Re: Элементы или атрибуты?
Интересная статья. Как раз задумался о жёстком порядке следования в DTD.
Собственно, мне было полезно чёткое объяснение, что заданный в DTD порядок следования элементов важен, а атрибутов - нет. Ну и вариант задания всех возможных порядков.

Автор действительно пристрастен к атрибутам Smile Так ведь и DTD пристрастен к SGML, так что предмет обсуждения не совсем корректен.
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[4819] Ср Авг 06, 2003 20:45

На всякий случай немного педантизма: упорядоченность элементов и неупорядоченность атрибутов - это свойство XML (SGML), DTD тут ни при чём.
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[5589] Пн Мар 22, 2004 21:42

Вот ещё последствия деятельности "атрибутоконечников": http://rsdn.ru/Forum/Message.aspx?mid=577709. Что характерно, за ошибки в проектировании расплачивается не автор схемы, но другой разработчик.
andy taler
Гость




[5591] Вт Мар 23, 2004 10:11

Проектирование XML-структур (XML-дизайн) - это особая дисциплина, к программированию (и программистам) никакого особого отношения не имеющая - и заниматься ей должны Специалисты - информационные дизайнеры, информационные проектировщики, специалисты по данным - называйте как угодно, но давать здесь рекомендации вовсе не дело их, "матерых программистов", у которых есть "свой хлеб, свои <теории>, своя профессия и свои заморочки".

Разумеется, "испортить", принять неверное решение, любой может что угодно и где угодно (пример ссылки выше), особенно если люди максималисты и любую сложную проблему хотели бы "упростить" только до двух градаций - черное и белое - например, элементы или атрибуты, тогда как на самом деле аспектов вопроса могут быть - вавилон, соответственно, число градаций серого, число критериев, подходов, предпочтений, лучших вариантов В КАЖДОМ КОНКРЕТНОМ СЛУЧАЕ - просто огромно!

Там, где XML связан с вопросами обмена (коммуникациями) с кем-то, он вообще становится ЯЗЫКОМ обмена, и к этим вопросам привлекаются ЛИНГВИСТЫ. Опыт структур, набранный в ходе _проектирования_ "БД по кадрам предприятия", мало годится для _проектирования_, например, систем обмена сообщениями. Вариантов "_проектов вообще_" - бесконечно, как бесконечно число проблем, нет понятия "проектирование-ВООБЩЕ".

Причем тут "любовь или нелюбовь" к атрибутам? Сколько раз здесь можно задавать господину Olpa один и тот же вопроc: Вот на сайте http://xmlhack.ru/ есть, скажем, rss-новости. Ответьте, господин Olpa, это XML или еще/уже НЕ-XML? С какого боку и к кому вы применяете термин "атрибутоконечники"? Ответьте честно: с какой стати на этом сайте rdf:about и rdf:resource вы применяете как атрибуты, а не как элементы? Вы хозяин этого сайта, почему вы не измените ситуацию, а идете на поводу у "атрибутоконечников"?

Еще, скажем, пример одного из языков Белого Дома (не нашего Белого Дома, а загнивающего ихнего)

Код:

<resolution
  resolution-stage="Agreed-to-House"
  resolution-type="standard"
  public-private="public".....
и т.д . и т. п.


Да, это можно было сделать элементами, но ведь не сделали же!. Мне приводить еще миллион примеров? Вот уже год как "анти-атрибутоконечник" на этом сайте не может ответить, что, все это надо было делать элементами? Нет в реальной жизни двух градаций - черное и белое, а _проектированием_ структур должны заниматься специалисты по структурам, а не "вообще _проектировщики_", особенно с программистским мышлением...
andy taler
Гость




[5592] Вт Мар 23, 2004 10:18

--------------------------------------
Моя выдержка из старого сообщения по теме http://xpoint.ru/forums/internet/XML/thread/23372.xhtml
--------------------------------------

Цитата:

тема "Tag vs. Attribute" поднималась (и продолжает) в сообществах тысячи раз, в основном либо "по_учителями" (пример, Мертц, see http://xmlhack.ru/forum/xml/viewtopic.php?t=799 ) либо также теми, кто сам предпочитает как раз теги vs. атрибутов.

В мнениях часто расходятся даже эксперты. Часть корней:
a) изучение xml автоматом начинается с элементов и авторы учебников более любят их обсуждать;

b) если на повестку выносят "некую унификацию", то подход "только-элементы" напрашивается сам, тогда как подход "только-атрибуты" невозможен в принципе.

с) часто даже авторы книг пристрастны (это не я сказал) и советуют использовать элементы vs. Attribute.

На самом же деле, как совершенно верно вверху было сказано (see: Андрей Новиков), если исключить небольшую модельную разницу, то

эти компоненты языка абсолютно симметричны (вы легко и всегда xslt-переведете одно в другое и наоборот, что, например, часто применяется при общении c BD)_

Но, разумеется, все это с оговоркой и учетом выражения: "небольшая модельная разница", а именно:

структурно атрибуты в принципе не эквивалентны элементам (они не структурируются в иерархии, один атрибут в элементе не может присутствовать несколько раз, сложно иметь множественные значения атрибута... [и т.д.]) порядок элементов всегда важен, порядок атрибутов нет (это отмечено стандартами, хотя.. реальные процессоры все равно его сохраняют "естественным", единственный нюанс - если завтра у вас найдется процессор, который порядок атрибутов поломает, этот процессор по-прежнему "будет удовлетворять" стандарту) при применении DTD и схем будут свои "естественные" нюансы уровня деклараций..

Но ведь главное же заключается совсем в другом:

Если вы "делаете XML под себя" - ды хоть кол на голове, и вы вольны напрочь забыть про существование кого-угодно и послать все-все и делать так, как хочется и удобно именно вам (!) Если вы "делаете XML под рисивера (для других)", другими словами, создаете XML-язык, оо.. вот тут-то начинается ЦЕЛАЯ НАУКА....

olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[5595] Вт Мар 23, 2004 23:57

Цитата:

Проектирование XML-структур (XML-дизайн) - это особая дисциплина, к программированию (и программистам) никакого особого отношения не имеющая - и заниматься ей должны Специалисты - информационные дизайнеры, информационные проектировщики, специалисты по данным.


Нет, пусть уж каждый занимается своим делам. Информационные дизайнеры и прочие подобные специалисты пускай занимаются своим делом (дизайном информации). А вот перекладывание их дизайна на XML -- это наша задача, задача для XML-разработчиков.

Цитата:

Там, где XML связан с вопросами обмена (коммуникациями) с кем-то, он вообще становится ЯЗЫКОМ обмена, и к этим вопросам привлекаются ЛИНГВИСТЫ.


Лингвисты пусть занимаются естественными языками, а не протоколами обмена информацией.

Цитата:

есть, скажем, rss-новости. Ответьте, господин Olpa, это XML или еще/уже НЕ-XML?


Спецификации соответствует? Значит XML.

Цитата:

С какого боку и к кому вы применяете термин "атрибутоконечники"?


К тем, кто в ситуации неопределённости element vs attribute выбирает attribute.

Цитата:

Ответьте честно: с какой стати на этом сайте rdf:about и rdf:resource вы применяете как атрибуты, а не как элементы?


Потому что есть стандарт.

Цитата:

почему вы не измените ситуацию, а идете на поводу у "атрибутоконечников"?


А оно мне надо?

Цитата:

Да, это можно было сделать элементами, но ведь не сделали же!


Всё верно, ибо:

Цитата:

Если же вы уверены, что объект данных будет оставаться уникальным, придерживайтесь атрибутов.
...
Надо только понять, что "объект данных уникален" означает: объект данных есть ID, IDREF, ENTITY или элемент перечисления.


Эта цитата из самого себя является также ответом на следующее:

Цитата:

Вот уже год как "анти-атрибутоконечник" на этом сайте не может ответить, что, все это надо было делать элементами?


Ответили уже. Сразу.
andy taler
Гость




[5596] Ср Мар 24, 2004 09:52

>> А вот перекладывание их дизайна на XML -- это наша задача, задача для XML-разработчиков.

Пожалуйста, дайте определение "XML-разработчика"

>> Лингвисты пусть занимаются естественными языками,
а не протоколами обмена информацией.

С какой это стати? Вы царь-бог? Откуда у вас права определять круги, задачи и сферы интересов любых интеллектуальных профессий? "Я Маша, библиограф, хочу писать на XML - на место!Твое дело - твоя библиография! (c)Olpa)"

Первая цитата из Olpa:
>> Потому что есть стандарт.

Вторая цитаты из Olpa:
>>и если чья-то поделка (например, некий XML от некоего W3C) не вписывается в инструмент, то тем хуже для поделки.

Это не "ваше твердое мнение"? Тогда с его учетом первая цитата не объясняет ровным счетом НИЧЕГО (zero).

Цитата:
>> Надо только понять, что "объект данных уникален" означает: объект данных есть ID, IDREF, ENTITY или элемент перечисления.

Вопрос
======
Растолкуйте, пожалуйста ваш "тезис" на примере rdf:about с вашего же сайта, если rdf:about и внутри и снаружи (мне так кажется - ибо многократно повторю, что я ни в одном месте вас не понимаю) может быть ЯВНО НЕ-УНИКАЛЕН или не иметь никакого отношения к уникальности. В чем он (или его отец, сын, сосед?) "должен быть" уникален? В содержимом? Где именно у вас указан его ID или IDREF? Хоть тресни, НЕ понимаю высказывания...

Растолкуйте это также прозрачно на примере resolution/resolution-stage - чтобы ВСЕМ было понятно - ибо на мое примитивное мышление там тоже нигде нет ни ID, ни IDREF, ни понятия уникальности в любом исполнении (если хотите, ID есть, но в более старшем элементе - нужен он ?). Тогда объясните, какая связь?

>> Ответили уже. Сразу.

No. Ровным счетом НУЛЬ трактуемых объяснений. Простите, вероятно, я полный идиот, если не могу уразуметь тех простых истин, что вы "объясняете"
andy taler
Гость




[5597] Ср Мар 24, 2004 14:32
по поводу "специалистов от лингвистики":
Что касается аспекта "какое дело здесь специалистам от лингвистики", чтобы вам конкретно было, на что именно возражать, я мог бы "начать список" (вы только скажите, какой его длиной ограничиться, ну а к "информационщикам" мы могли вернуться чуть позже)

Henry Thompson: Managing Director of Markup Technology Ltd. He received his Ph.D. in Linguistics from the University of California at Berkeley in 1980. Currently... a member of the XSL and XML Schema Working Groups of the W3C (lead editor of the Structures part of the XML Schema W3C Recommendation)...

Ron Turner: DR. RONALD TURNER has presented refereed papers at numerous XML/SGML international meetings, and has developed and presented XML Fundamentals, a training course for programmers, data specialists, and IT managers. Author of "The Essential Guide to XML Technologies"... He holds a Ph.D. in linguistics from Harvard.

Eve Maler: Eve Maler is an XML Standards Architect at Sun Microsystems. She currently coordinates Sun's work on XML/web services security standards and promotes adoption of these standards in the industry at large and in Sun products and programs. Eve was a charter member of the original W3C XML working group. She co-edited the second edition of the XML 1.0 Recommendation and several other specifications published by W3C and OASIS... Eve will introduce the Universal Business Language (UBL) and the Security Assertion Markup Language (SAML)... Eve holds a Bachelor of Arts degree in Linguistics from Brandeis University, Waltham, Massachusetts.

(мне продолжить?)

Пожалуйста, еще раз поясните, какой именно смысл Вы хотели бы вложить во фразу ">> А Лингвисты пусть занимаются естественными языками.."
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[5598] Ср Мар 24, 2004 16:10

Во-первых, из того, что некоторые элементы множества обладают неким свойством, не следует, что всё множество обладает неким свойством; так что список лингвистов ничего не даёт. Во-вторых, я далёк от того, чтобы запрещать сапожникам печь пироги (если эти пироги не для меня). В-третьих, обсуждение того, кто должен писать XML -- это отдельная тема, не имеющая к вопросу "elements vs attributes" никакого отношения.

Цитата:

rdf:about etc


Не я делал этот стандарт, так что не ко мне и вопрос. Как сделано, так и сделано, и не нам это менять.

Цитата:

на примере resolution/@resolution-stage


Это перечисление: множество значений ограничено (скорее всего). Поэтому и атрибут.
andy taler
Гость




[5599] Ср Мар 24, 2004 17:49

Для точности - w3 не имеет вообще понятия "стандартов". Все, что они выпускают, называется "рекомендации" (Уж вам то следовало бы знать) - но для данного разговора это важно (для многих других случаев нет).

resolution (принципиально) на данный момент не имеет ни dtd, ни wxs. Поэтому: Никто не знает (пока), будет ли оно являться перечислимым типом. Однако вопрос: что Olpa называет перечислимым типом у того, что "никак не определено"?

OK, вероятно, тогда вам просто мало примеров:

1) WordML: ... w:left="720".. w:pos="2880".../>
это id или idref ? или это опять перечислимые типы?

2) Ok, не нравится Микрософт, берем ОpenОffice:
<style:properties fo:font-family="Courier" fo:margin-left="0.25inch" fo:font-size="11pt"/>

3) XBRL: <xbrli:numericContext precision="12" cwa="false">
допустим, cwa-перечислимый, precision="12" тоже??

4) OPML: <outline text="songList"> <outline text="It's XML, of course">
это id или перечислимый?

5) XFORMS: <xforms:setvalue ref="/stockData/account/stock/value" ...
это id или перечислимый?

6) SVG: <rect x="450" y="150" width="100" height="100">

продолжать? (Здесь специально не все языки являются стандартами.. так?) Но почему ни один из них не уловлетворяет "вашим постулатам"? Их следовало бы или не следовало бы приводить к вашим постулатам? - вопрос абсолютно по теме.

>> так что список лингвистов ничего не даёт.... и отд. тема, не имеющая к вопросу никакого отношения

Тогда с какой стати и зачем вы сами ответили выше про лингвистов, да еще и так, чтобы вам задали "вполне естественный вопрос" (вы на него так и не ответили)??

Вообще, удивительная, ну прямо удивительная способность "ужом", как угодно, но обязательно уходить от ответов на прямые вопросы.. Потрясающе..
andy taler
Гость




[5600] Ср Мар 24, 2004 19:16

вот уж чего никак не ожидал, так у автора этого треда
еще, кажется вообще есть проблемы с (мат.) логикой

Цитата:

>> Во-первых, из того, что некоторые элементы множества обладают неким свойством, не следует, что всё множество обладает неким свойством;


Здесь литерально повторяющий квантор "некий" с неизвестной (возможно, неодинаковой) интерпретацией делает высказывание либо некорректным, либо бессмысленным

Кажется, одно из более корректных высказываний:
из того, что некоторые элементы множества обладают ОПРЕДЕЛЕННЫМ свойством L, СЛЕДУЕТ (без НЕ), что всё множество обладает "неким другим конкретным" свойством, а именно "тем свойством, что данное множество обязательно ВКЛЮЧАЕТ в себя(!) элементы, обладающие свойством L"

где и кто вам сказал, что все XML-щики обязаны быть лингвистами? Выше черным по белому было написано: _привлекаются_ ЛИНГВИСТЫ.
olpa
Любитель

Зарегистрирован: 23.04.2002
Сообщения: 981
Откуда: Санкт-Петербург
Посетить сайт автора
[5601] Ср Мар 24, 2004 19:45

Цитата:

но обязательно уходить от ответов на прямые вопросы


Оффтопики не поддерживаю, поэтому и не отвечаю.

Теперь по примерам.

Цитата:

5) XFORMS: <xforms:setvalue ref="/stockData/account/stock/value" ...
это id или перечислимый?


Вполне себе idref. Делаем атрибутом.

Цитата:

4) OPML: <outline text="songList"> <outline text="It's XML, of course">
это id или перечислимый?


Это пример ужаса. Как мне держать текст на нескольких языках? <outline text="It's XML, of course" rutext="Это, конечно же, плохо спроектированный XML">?

За пример с единицами измерения спасибо. Можно будет добавить в список того, что почти однозначно идёт в атрибуты. Но и тут могут возникнуть свои проблемы:

  • выражения вида "12px + -.7 pt" обрабатываются плохо ,
  • какой валидатор подскажет мне, что в выражении o:margin-left="0.25inсh" в слове "inсh" русская буква "с", а не латинская.