Соглашения о регистре имен элементов?
-
21-08-2019 - |
Вопрос
Существуют ли какие - либо формальный рекомендации по оформлению элементов в XML?
Я знаю, что XHTML использует имена элементов в нижнем регистре (в отличие от HTML, который канонически использует верхний регистр, но не чувствителен к регистру).
Но я говорю о XML для общего контента.
нижний регистр:
<customer>
<accountnumber>619</accountnumber>
<name>Shelby Lake</name>
</customer>
Кейс для верблюдов:
<customer>
<accountNumber>619</accountNumber>
<name>Shelby Lake</name>
</customer>
Паскаль - Кейс:
<Customer>
<AccountNumber>619</AccountNumber>
<Name>Shelby Lake</Name>
</Customer>
ВЕРХНИЙ РЕГИСТР:
<CUSTOMER>
<ACCOUNTNUMBER>619</ACCOUNTNUMBER>
<NAME>Shelby Lake</NAME>
</CUSTOMER>
Примечание: Я ищу цитируемые рекомендации, а не мнения.Но мнение, набравшее наибольшее количество голосов "за", можно считать ориентиром.
Решение
Большинство стандартов XML, исходящих из W3C, как правило, используют нижний регистр с дефисами.
Существует философское различие между представлением XML как формата для документов, нейтральных к платформе, что пытаются поощрять стандарты W3C, и такими языками, как XAML, которые рассматривают XML как сериализацию объектного графа, специфичного для платформы.
Если вы используете XML не как формат документа, не зависящий от платформы, а как сериализацию, специфичную для конкретного приложения, то вы могли бы также избавить себя от некоторых хлопот и обеспечить соответствие 1: 1 между именами XML и именами, специфичными для конкретной платформы.Но почти любой другой формат объектного графика лучше подходит для этой цели, чем XML.
Если да, то вы, возможно, захотите вписаться в XHTML, XSLT, SVG, XProc, RelaxNG и остальные.
Другие советы
Не то чтобы это имело значение, но я всегда был неравнодушен к PascalCase для элементов и camelCase для атрибутов:
<Root>
<ParentElement attributeId="1">
<ChildElement attributeName="foo" />
</ParentElement>
</Root>
Официальной рекомендации нет.
Поскольку XML был разработан с двумя целями хранение документов и обмен информацией между разрозненными системами, он был разработан таким образом , чтобы иметь возможность совпадение приложения, использующие его.
Таким образом, .Net XML имеет тенденцию использовать ProperCasing (witness XAML), в то время как другие XML будут использовать camelCasing, python_conventions, dot.naming и даже COBOL-СОГЛАШЕНИЯ.Похоже, W3C немного нравится использовать строчные буквы с тире (напримерXSLT) или просто приведенные в нижнем регистре слова (напримерMathML).
Мне нравятся все строчные буквы и никаких подчеркиваний, так как это означает меньшее использование клавиши [Shift], а мои пальцы немного ленивы.:)
Чтобы добавить к ответу Metro Smurf.
Национальная модель обмена информацией (NIEM: http://en.wikipedia.org/wiki/National_Information_Exchange_Model) говорит использовать:
- Верхний чехол camelCase (PascalCase) для элементов.
- (нижний) camelCase для атрибутов.
NIEM - хороший вариант, когда вы хотите соответствовать какому-то стандарту.
Смотрите на Правила именования и оформления XML СЕФАКТ ООН Техническая спецификация Версия 3.0 на странице 23 приведены некоторые примеры правил, используемых в нескольких стандартах.
Особенности (со страницы 23 версии 3.0 от 17 декабря 2009 года):
- Для именования атрибутов НЕОБХОДИМО использовать lowerCamelCase (LCC).
- Верхний регистр (UCC) ДОЛЖЕН использоваться для присвоения имен элементам и типам.
- Имена элементов, атрибутов и типов ДОЛЖНЫ быть в единственном числе, если только само понятие не является множественным.
Чтобы подробнее остановиться на мой комментарий выше:использование 'нижнего регистра с дефисами' имеет некоторые проблемы в XSLT.В частности, легко спутать узел, называемый, скажем, "year-from-age", с формулой "year - age" (напримервычтите возраст из года).
Как указывает @KarlKieninger, это проблема только на человеческом уровне, а не для анализатора XSLT.Однако, поскольку это часто будет не выдавать ошибку, использование "нижнего регистра с дефисами" в качестве стандарта напрашивается на неприятности, ИМХО.
Несколько уместных примеров:
<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
Наличие одного пробела изменяет приведенный выше результат, но ни один из вариантов не является ошибкой.
Руководство по стилю Google рекомендует (возможно, даже предписывает) camelCase для всех имен элементов, а также имен атрибутов.
Первоначальным замыслом для XML-оболочки был нижний регистр с дефисами.Он чувствителен к регистру и не требует от вас соблюдения этого соглашения - так что вы можете делать все, что захотите.У меня нет цитат, извините.
Я бы не сказал, что HTML "канонически" использует верхний регистр.Я думаю, что изначально верхний регистр использовался для более легкого визуального отделения HTML от содержимого.В наши дни с подсветкой синтаксиса в этом просто нет необходимости.
Я склоняюсь к строчным буквам, при необходимости с тире (к тому же быстрее набирать текст).Смешивание регистров в XML просто кажется мне неправильным.
Кэмел кейс получает мой голос.
Что касается приведенных примеров, возможно, на этот вопрос можно прийти по ссылке, которую люди приводят.