Чи існує стандартна умова іменування елементів XML? [зачинено]


96

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

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

Так само, якщо у мене є перелічене значення для атрибута, який є кращим

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

2
Технічно кажучи, ви також можете використовувати <my.tag />. У деяких ситуаціях це може бути не найкращою ідеєю ...
Філо


У мережі є кілька "стандартів".
user2864740

Відповіді:


46

Я підозрюю, що найпоширенішими цінностями були б camelCased - тобто

<myTag someAttribute="someValue"/>

Зокрема, пробіли викликають кілька збоїв у змішуванні з генераторами коду (тобто для [де] серіалізації xml на об’єкти), оскільки не так багато мов дозволяють перерахування пробілів (вимагаючи відображення між ними).


35
Хм ... найкраща відповідь ... Я думаю, що це гідна відповідь, але це лише думка. Мати якесь посилання було б непогано.
Hamish Grubijan

4
Я не згоден, я не звик бачити XML із верблюжим чохлом.
Рафа

Я знаю, що це стара відповідь, але більшість новіших Microsoft XML, які я бачив, як правило, не погоджуються з цим вибором формату. Але тоді IIS любить dot.naming так ..
user2246674

4
Як усі згадують, це особисте, але я дотримуюся вашого підходу, оскільки завжди визначаю свій XML за допомогою XMLSchema, а XMLSchema дотримується цього підходу. w3.org/2001/XMLSchema.xsd . Для мене це не має нічого спільного з мовами програмування. Ми використовуємо XML, оскільки це взаємодіючий стандарт інтерфейсу. Мови програмування - це лише деталь реалізації, і кожна мова має свою власну умову.
dan carter

Мої 2 центи - я бачив CamelCase, і всі малі; рідко всі верхні (старий HTML), і я бачив малі регістри. Я не пам’ятаю, щоб коли-небудь бачив верблюда. Я віддаю перевагу CamelCase або малу літеру. Атрибути, однак, я, як правило, бачу всі малі літери.
Kit10

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 тегу шляху.
  • Обидва з атрибутом стилю ...

Я не до кінця розумію аргументи проти практики (схоже, це стосується лише деяких звичаїв), але вона є принаймні юридичною та досить широко застосовується. З недоліками, мабуть.

О, і вам не потрібен пробіл перед косою рисою, що автоматично закривається. :-)


Аргумент проти пробілів є, і це лише тому, що він був заданий конкретно у питанні, якщо значення перераховується тоді для підтримки синтаксичного аналізу, не багато мов підтримують перелічення з пробілами, проте багато хто з нас, хто використовує XML в C / C ++, C # , або Java (мови, якими я користуюся, але не обмежуючись ними) часто відображає значення атрибутів до перерахувань. Потім ми можемо просто проаналізувати літерал на карту / словник (або простіше у випадку з Java та C #). Зрештою, я погоджуюсь, що це, швидше, питання запалу, а не стандарт. Я просто дотримуюся філософії "коли в Римі".
Kit10

12

Я віддаю перевагу TitleCase за імена елементів, а camelCase за атрибути. Жодного місця немає.

<AnElement anAttribute="Some Value"/>

Окрім того, я швидко здійснив пошук найкращих практик у XML і придумав це досить цікаве посилання: Схеми XML: найкращі практики .


8

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


+1 за роздуми про імена змінних / функцій
Ates Goral

@downvoter: будь ласка, зробіть мені люб'язність і поясніть самі.
Аннаката

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-схем у світі, і це camelCased.

Специфікація знаходиться тут: http://cyber.law.harvard.edu/rss/rss.html

Звичайно, він не має атрибутів вузла у схемі, але всі імена елементів вузла є camelCased. Наприклад:

lastBuildDate managementEditor pubDate


2

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

Наприклад, якщо ваш javascript використовує camelCase, тоді ваш XML також використовує camelCase.


1
Хоча це корисно для внутрішньопроектної роботи, це швидко руйнується, коли XML використовується як формат мовно-агностичного обміну.
user2864740

Отже, компоненти у вашому проекті узгоджені, але як ви розробляєте початковий стандарт, якому відповідає проект?
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


Нечіткий опис того, які імена можливі, дає мало вказівок щодо того, яке з можливих імен слід використовувати.
Семюель Едвін Уорд

Хоча вони визначають базову лінію того, що можливо - так?
petermeissner

10
Звичайно, але це подібно до того, якби хтось запитав: "як я повинен назвати свою дитину, щоб їх не задирали в школі", а ви відповіли "ну, ось список звуків, які здатні видавати люди".
Семюель Едвін Уорд

Так, але htat насправді не було питанням, так? Тому що запитання були: "Чи існує стандартна умова іменування елементів 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">

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.