Есть ли стандартное соглашение об именах для элементов XML? [закрыто]

97

Есть ли какой-либо стандарт, де-факто или иначе, для документов XML? Например, какой способ написать тег «лучший»?

<MyTag />
<myTag />
<mytag />
<my-tag />
<my_tag />

Точно так же, если у меня есть перечислимое значение для атрибута, которое лучше

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>
tpower
источник
2
С технической точки зрения вы также можете использовать <my.tag />. Может быть, в некоторых случаях это не лучшая идея ...
PhiLho
1
Дубликат stackoverflow.com/questions/1074447/…
Игорь Брейц
В Интернете можно найти несколько «стандартов» ..
user2864740

Ответы:

47

Я подозреваю, что наиболее распространенными значениями будут CamelCased, т.е.

<myTag someAttribute="someValue"/>

В частности, пробелы вызывают несколько сбоев при смешивании с генераторами кода (то есть для [де] сериализации xml в объекты), поскольку не многие языки допускают перечисления с пробелами (требуя сопоставления между ними).

Марк Гравелл
источник
36
Хм ... лучший ответ ... Я думаю, что это достойный ответ, но это всего лишь мнение. Было бы неплохо иметь какую-то ссылку.
Hamish Grubijan
4
Я не согласен, я не привык видеть XML с верблюжьим регистром.
Рафа
Я знаю, что это старый ответ, но большая часть нового Microsoft XML, который я видел, имеет тенденцию не соглашаться с этим выбором формата. Но тогда IIS любит dot.naming, так что ..
user2246674
4
Как все упоминают, это личное, но я следую вашему подходу, поскольку я всегда определяю свой XML с помощью XMLSchema, а XMLSchema следует этому подходу. w3.org/2001/XMLSchema.xsd . Для меня это не имеет никакого отношения к языкам программирования. Мы используем XML, потому что это стандарт совместимого интерфейса. Языки программирования - это всего лишь деталь реализации, и каждый язык имеет свое собственное соглашение.
Дэн Картер
Мои 2 цента - я видел CamelCase, и все строчные буквы; редко все в верхнем регистре (старый HTML), и я видел нижний регистр. Я не припомню, чтобы когда-нибудь видел верблюда. Я предпочитаю CamelCase или строчные буквы. Атрибуты, однако, я обычно вижу в нижнем регистре.
Kit10 08
30

Правила именования XML

Элементы XML должны соответствовать этим правилам именования:

    - Element names are case-sensitive 
    - Element names must start with a letter or underscore
    - Element names cannot start with the letters xml(or XML, or Xml, etc) 
    - Element names can contain letters, digits, hyphens, underscores, and periods 
    - Element names cannot contain spaces

Можно использовать любое имя, слова не зарезервированы (кроме xml).

Лучшие практики именования

    - Create descriptive names, like this: <person>, <firstname>, <lastname>.
    - Create short and simple names, like this: <book_title> not like this: <the_title_of_the_book>.
    - Avoid "-". If you name something "first-name", some software may think you want to subtract "name" from "first".
    - Avoid ".". If you name something "first.name", some software may think that "name" is a property of the object "first".
    - Avoid ":". Colons are reserved for namespaces (more later).
    - Non-English letters like éòá are perfectly legal in XML, but watch out for problems if your software doesn't support them.

Стили именования

Для элементов XML не определены стили именования. Но вот некоторые из наиболее часто используемых:

    - Lower case    <firstname> All letters lower case
    - Upper case    <FIRSTNAME> All letters upper case
    - Underscore    <first_name>    Underscore separates words
    - Pascal case   <FirstName> Uppercase first letter in each word
    - Camel case    <firstName> Uppercase first letter in each word except the first

ссылка http://www.w3schools.com/xml/xml_elements.asp

Фархад Малеки
источник
13

Для меня это похоже на обсуждение стиля кода для языка программирования: одни будут выступать за стиль, другие - за альтернативу. Единственный консенсус, который я увидел: «Выберите один стиль и будьте последовательны»!

Я просто замечу, что многие диалекты XML используют только строчные имена (SVG, Ant, XHTML ...).

У меня нет правила «без пробелов в значениях атрибутов». Каким-то образом он отправляет в дискуссию «что помещать в атрибуты, а что в текст?».
Возможно, это не лучшие примеры, но есть несколько хорошо известных XML-форматов, использующих пробелы в атрибутах:

  • XHTML, особенно атрибут класса (вы можете поместить два или более классов) и, конечно, атрибуты alt и title.
  • SVG, например, с атрибутом d тега пути.
  • Оба с атрибутом стиля ...

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

О, и вам не нужен пробел перед автоматически закрывающейся косой чертой. :-)

PhiLho
источник
Аргумент против пробелов состоит в том, и это только потому, что он был задан специально в вопросе, если значение перечислено, то для поддержки синтаксического анализа, не многие языки поддерживают перечисления с пробелами, но многие из нас, кто использует XML в C / C ++, C # или Java (языки, которые я использую, но не ограничиваясь ими) часто сопоставляют значения атрибутов с перечислениями. Затем мы можем просто разобрать литерал на карту / словарь (или проще в случае Java и C #). В конечном итоге я согласен с тем, что это скорее вопрос страсти, чем стандарт. Я просто следую философии «когда в Риме».
Kit10 08
12

Я предпочитаю TitleCase для имен элементов и camelCase для атрибутов. Нет мест ни для того, ни другого.

<AnElement anAttribute="Some Value"/>

Кстати, я быстро поискал передовые методы в XML и наткнулся на довольно интересную ссылку: XML-схемы: лучшие практики .

Raithlin
источник
8

Я бы предпочел строчные или верблюжьи теги, и поскольку атрибуты обычно должны отражать значения данных, а не содержимое, я бы придерживался значения, которое можно было бы использовать в качестве имени переменной на любой платформе / языке, которые могут быть интересны, то есть избегать пробелов, но другие две формы могут быть в порядке

аннаката
источник
+1 за размышления об именах переменных / функций
Атес Горал,
@downvoter: пожалуйста, объяснитесь.
annakata
8

Это субъективно, но если в теге элемента есть два слова, удобочитаемость можно улучшить, добавив подчеркивание между словами (например <my_tag>) вместо использования разделителя. Ссылка: http://www.w3schools.com/xml/xml_elements.asp . Итак, согласно w3schools, ответ будет таким:

<my_tag attribute="some value">

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

Алистер
источник
2
+1, потому что вы процитировали ссылку, в которой есть раздел «Лучшие методы именования» (а не просто мнение)
Fuhrmanator
2
@Fuhrmanator Эта "ссылка" сама по себе является мнением, хотя и дает некоторое оправдание. Это ни в коем случае не стандарт - и (хотя он намного менее ужасен, чем был) я не рекомендую и не использую w3schools в качестве «справочника». Есть гораздо более оригинальные и исчерпывающие источники.
user2864740
@ user2864740, например? Вы закончили свой комментарий, прежде чем предоставить более оригинальные и исчерпывающие источники. Смысл моего +1 заключался в том, что ОП просил стандарты, но большинство ответов содержат мнения.
Fuhrmanator
Этот ответ содержит только мнения , ссылка на w3schools не имеет значения и не удаляет их. Что касается стандартов, см. Правила реализации (как в RSS ) или правила организации (как в OAGi ) - на определенном уровне «стандарт» применяется только на конкретном уровне приложения / бизнеса. Ссылка на w3schools дает только собственное мнение / передовой опыт в очень расплывчатом смысле (он дает несколько советов и говорит: «Вот как это сделать»).
user2864740
То есть простое включение ссылки не делает ответ (или связанный ресурс) авторитетным.
user2864740
7

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

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

Пит Киркхэм
источник
3

rss, вероятно, одна из самых популярных XML-схем в мире, и она основана на верблюжьем.

Спецификация здесь: http://cyber.law.harvard.edu/rss/rss.html

Конечно, у него нет атрибутов узла в схеме, но все имена элементов узла имеют верблюжий регистр. Например:

lastBuildDate manageEditor pubDate

Evermeire
источник
2

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

Например, если ваш javascript использует camelCase, тогда ваш XML также использует camelCase.

миксатана
источник
1
Хотя это полезно для внутрипроектной работы, это быстро выходит из
строя,
Итак, компоненты вашего проекта согласованы, но как разработать исходный стандарт, которому проект соответствует?
Gqqnbig
2

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

  1. Для настройки Microsoft использует camelCase . Посмотрите файл конфигурации Visual Studio. Для VS2013 он хранится в:

    C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ devenv.exe.config

Пример:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
  1. Microsoft также использует UpperCase для своего XAML. Я предполагаю, что это отличается от HTML (в котором используются строчные буквы).

Пример:

<MenuItem Header="Open..." Command="ApplicationCommands.Open">
    <MenuItem.Icon>
        <Image Source="/Images/folder-horizontal-open.png" />
    </MenuItem.Icon>
</MenuItem>
Джесон Мартаджая
источник
1

Явной рекомендации нет. Основываясь на другой рекомендации W3C, той, что касается XHTML , я выбрал строчные буквы:

4.2. Имена элементов и атрибутов должны быть в нижнем регистре.

В документах XHTML все имена элементов и атрибутов HTML должны использоваться в нижнем регистре. Это различие необходимо, потому что XML чувствителен к регистру, например, <li> и <LI> - разные теги.

Диего Мента
источник
0

Правила именования XML

Элементы XML должны соответствовать этим правилам именования:

  • Имена могут содержать буквы, цифры и другие символы.
  • Имена не могут начинаться с цифры или символа пунктуации
  • Имена не могут начинаться с букв xml (или XML, или Xml и т. Д.)
  • Имена не могут содержать пробелы. Можно использовать любое имя, слова не зарезервированы.

Источник: W3 School

Петермейсснер
источник
Расплывчатое описание возможных имен дает мало указаний относительно того, какие из возможных имен следует использовать.
Сэмюэл Эдвин Уорд
Хотя они определяют основу того, что возможно, верно?
petermeissner 05
10
Конечно, но это похоже на то, как если бы кто-то спросил: «Как назвать своего ребенка, чтобы его не дразнили в школе», а вы ответили: «Ну, вот список звуков, которые люди способны издавать».
Сэмюэл Эдвин Уорд
Да, но на самом деле вопрос был не в том, верно? Потому что вопросы были такими: «Существует ли стандартное соглашение об именах для элементов XML?» и «Есть ли какой-либо стандарт, де-факто или нет, для документов XML?» так это ответ? Тот, который отвечает на вопрос, а не только один общий поток интерпретации вопроса.
petermeissner
3
Это ответ, только если вы проигнорируете остальную часть вопроса после этих двух предложений. Вы не пытались ответить «что лучше» или «что лучше».
Сэмюэл Эдвин Уорд
0

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

Они широко используются в ARIA ( https://developer.mozilla.org/de/docs/Web/Barrierefreiheit/ARIA ), которые можно увидеть во многих исходных кодах и поэтому являются обычными. Как уже указывалось здесь, они, безусловно, разрешены, что также объясняется здесь: Использование - в имени элемента XML

Также в качестве дополнительного преимущества: при написании HTML в сочетании с CSS у вас часто есть классы, имена которых по умолчанию также используют дефис в качестве разделителя. Теперь, если у вас есть настраиваемые теги, которые используют классы CSS или настраиваемые атрибуты для тегов, которые используют классы CSS, тогда что-то вроде:

<custom-tag class="some-css-class">

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

<customTag class="some-css-class">

Ледяной огонь
источник