Существует ли стандартное соглашение об именах для элементов XML?

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

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

Аналогично, если у меня есть перечислимое значение для атрибута, который лучше

<myTag attribute="value one"/>
<myTag attribute="ValueOne"/>
<myTag attribute="value-one"/>

Ответ 1

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

<myTag someAttribute="someValue"/>

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

Ответ 2

Правила именования 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

Ответ 3

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

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

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

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

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

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

Ответ 4

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

<AnElement anAttribute="Some Value"/>

В стороне я быстро просмотрел Best Practices в XML и придумал довольно интересную ссылку: XML-схемы: Best Practices.

Ответ 5

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

Ответ 6

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

<my_tag attribute="some value">

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

Ответ 7

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

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

Ответ 8

rss, вероятно, является одной из наиболее потребляемых xml-схем в мире, и это camelCased.

Spec здесь: http://cyber.law.harvard.edu/rss/rss.html

Предположим, что в схеме нет атрибутов node, но все имена элементов node являются camelCased. Например:

lastBuildDate managingEditor PubDate

Ответ 9

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

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

Ответ 10

Microsoft использует два соглашения:

  • Для конфигурации 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>

Ответ 11

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

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

Документы XHTML должны использовать строчные буквы для всех элементов HTML и атрибута имена. Эта разница необходима, поскольку XML чувствителен к регистру, например. < & Li GT; и <LI> это разные теги.

Ответ 12

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

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

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

Источник: Школа W3

Ответ 13

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

Они широко используются в 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">