Соглашения о случаях имен элементов?

Существуют ли какие-либо формальные рекомендации по обтеканию элементов в XML?

Я знаю, что XHTML использует имена нижних регистров (в отличие от HTML, который канонически использует прописные буквы, но не чувствителен к регистру).

Но я говорю о XML для общего контента.

в нижнем регистре:

<customer> 
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>

верблюжий:

<customer> 
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>

PascalCase:

<customer> 
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>

ВЕРХНИЙ:

<customer> 
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>

Примечание. Я ищу ссылки, а не мнения. Но мнение с наибольшим количеством голосов можно считать ориентиром.

Ответ 1

Большинство стандартов XML, основанных на W3C, обычно используют нижний регистр с дефисами.

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

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

Если да, то вы можете захотеть вписаться в XHTML, XSLT, SVG, XProc, RelaxNG и остальные.

Ответ 2

Не важно, но я всегда был частичным для PascalCase для Elements и camelCase для атрибутов:

<Root>
  <ParentElement attributeId="1">
    <ChildElement attributeName="foo" />
  </ParentElement>
</Root>

Ответ 3

Официальной рекомендации нет.

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

Итак. XML XML имеет тенденцию использовать ProperCasing (свидетельство XAML), в то время как другой XML будет использовать camelCasing, python_conventions, dot.naming и даже COBOL-CONVENTIONS. W3C, по-видимому, похож на нижний регистр с тире - довольно-разрядный (например, XSLT) или просто на несколько секунд (например, MathML).

Мне нравится весь нижний регистр и не подчеркивается, поскольку это означает меньшее использование клавиши [Shift], а мои пальцы немного ленивы.:)

Ответ 4

Чтобы добавить к ответам Metro Smurf.

Национальная модель обмена информацией (NIEM: http://en.wikipedia.org/wiki/National_Information_Exchange_Model) говорит:

  • Верхний элемент CamelCase (PascalCase) для элементов.
  • (ниже) camelCase для атрибутов.

NIEM делает хороший вариант, если вы хотите соответствовать стандарту.

Ответ 5

Для некоторых примеров правил, используемых в нескольких стандартах, см. Техническая спецификация правил именования и проектирования XML Names and Design Rules Version 3.0 стр. 23. p >

Особенности (со страницы 23 версии 3.0 от 17 декабря 2009 года):

  • LowerCamelCase (LCC) ДОЛЖНА использоваться для обозначения атрибутов.
  • UpperCamelCase (UCC) ДОЛЖНА использоваться для обозначения элементов и типов.
  • Элементы, атрибуты и имена типов ДОЛЖНЫ быть в единственной форме, если само понятие не является множественным.

(другая ссылка, шведский сайт)

Ответ 6

Руководство по стилю Google рекомендует (возможно, даже мандаты) camelCase для всех имен элементов, а также имена атрибутов.

Ответ 7

Чтобы расширить мой комментарий выше: использование "строчных букв с дефисами" имеет некоторые проблемы в XSLT. В частности, легко ввести в заблуждение node, называемый "год от года" с формулой "год - возраст" (например, вычесть возраст из года).

Как отмечает @KarlKieninger, это только проблема на человеческом уровне, а не для синтаксического анализа XSLT. Однако, поскольку это часто не вызывает ошибки, использование "нижнего регистра с дефисами" в качестве стандарта запрашивает проблемы, IMHO.

Некоторые подходящие примеры:

<a>1</a><b>1</b>
<xsl:value-of select="a+b"/>
outputs 2, as expected

<a>1</a><b>1</b>
<xsl:value-of select="a-b"/>
DOES NOT ERROR, BUT OUTPUTS NOTHING AT ALL

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

<a-b>1</a-b><c>1</c>
<xsl:value-of select="a-b -c"/>
outputs 0, as expected

Но обратите внимание на то, как сбивать с толку приведенное выше!

<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a-b"/>
outputs 3

<a>1</a><a-b>3</a-b><b>2</b>
<xsl:value-of select="a -b"/>
outputs -1

Наличие одного пробела изменяет вывод выше, но ни один из вариантов не является ошибкой.

Ответ 8

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

Ответ 9

Я бы не сказал, что HTML "канонически" использует прописные буквы. Я думаю, что изначально прописные буквы использовались для более простого визуального выделения HTML из контента. С подсветкой синтаксиса в настоящее время это просто не нужно.

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

Ответ 10

Случай с верблюдом получает мой голос.

Что касается цитируемых примеров, возможно, этот вопрос может прийти по ссылке, которую цитируют люди.