Вопрос по xml – Условные обозначения имен элементов?

114

Есть лиformal рекомендации по размещению элементов в XML?

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

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

lowercase:
<customer> 
   <accountnumber>619</accountnumber>
   <name>Shelby Lake</name>
</customer>
camelCase:
<customer> 
   <accountNumber>619</accountNumber>
   <name>Shelby Lake</name>
</customer>
PascalCase:
<Customer> 
   <AccountNumber>619</AccountNumber>
   <Name>Shelby Lake</Name>
</Customer>
UPPERCASE:
<CUSTOMER> 
   <ACCOUNTNUMBER>619</ACCOUNTNUMBER>
   <NAME>Shelby Lake</NAME>
</CUSTOMER>

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

возможный дубликатIs there a standard naming convention for XML elements? Basil Bourque

Ваш Ответ

10   ответов
30

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

Поскольку XML был разработан с двойными целямиholding documents а такжеexchanging information between disparate systemsбыл разработан таким образом, чтобы иметь возможностьmatch приложения, использующие его.

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

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

Error: User Rate Limit Exceeded
13

УвидетьТехническая спецификация правил именования и проектирования XML СЕФАКТ ООН, версия 3.0  стр. 23 для некоторых примеров правил, используемых в нескольких стандартах.

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

  • LowerCamelCase (LCC) MUST be used for naming attributes.
  • UpperCamelCase (UCC) MUST be used for naming elements and types.
  • Element, attribute and type names MUST be in singular form unless the concept itself is plural.

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededSchemasError: User Rate Limit Exceeded
87

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

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

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

Если да, то вы можете использовать XHTML, XSLT, SVG, XProc, RelaxNG и другие.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
11

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

Как указывает @KarlKieninger, это проблема только на уровне человека, а не для анализатора XSLT. Однако так как это будет частоnot produce an error, используя «строчные буквы с дефисами»; как стандарт напрашивается на неприятности, ИМХО.

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

<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

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
1

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

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

Error: User Rate Limit Exceeded
62

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

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

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

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

23

Добавить к ответу Метро Смурфа.

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

  • Upper CamelCase (PascalCase) for elements.
  • (lower) camelCase for attributes.

NIEM предлагает хороший вариант, если вы хотите соответствовать какому-либо стандарту.

Вот документ NIEM, где они описывают соглашения об именах для атрибутов и элементов:niem.gov/documentsdb/,Documents/Technical/NIEM-NDR-1-3.pdf
4

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

Error: User Rate Limit Exceeded
9

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

Похожие вопросы