要素名の大文字と小文字の規則?


120

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>

注:私は意見ではなく引用されたガイドラインを探しています。ただし、賛成票が最も多い意見はガイドラインと見なすことができます。


回答:


88

W3Cに由来するほとんどのXML標準では、ハイフン付きの小文字を使用する傾向があります。

XMLをW3C標準が推奨するプラットフォーム中立ドキュメントのフォーマットと見なすことと、XMLをプラットフォーム固有のオブジェクトグラフのシリアル化として見なすXAMLなどの言語との間には、哲学的な違いがあります。

XMLをプラットフォームに依存しないドキュメント形式としてではなく、アプリケーション固有のシリアル化として使用している場合は、面倒を省いて、XML名とプラットフォーム固有の名前を1対1で対応させることもできます。しかし、他のほとんどすべてのオブジェクトグラフ形式は、その目的でXMLよりも優れています。

もしそうなら、あなたはXHTML、XSLT、SVG、XProc、RelaxNG、その他に適合したいと思うかもしれません。


7
それは、ハイフンを含む小文字が推奨されるか、推奨されないことを意味しますか?
WarFox 2011

9
@WarFox誰も公式の推薦をしたとは思いません。IME、相互運用性のためにw3cに由来するフォーマットは、ハイフンスタイルになる傾向があります。Microsoftや他の一部の形式は、実装と、実装に使用される言語でのオブジェクト名の規則と密接に結び付いている傾向があります。XMLを使用してシステムを分離している場合、XMLをそのシステムの1つのコンポーネントの言語スタイルに結合しないと、オブジェクトではなくメッセージの観点から考える必要が生じる可能性があるため、小文字とハイフンのスタイルをお勧めします。
ピートカーカム2011

5
「ハイフン付きの小文字」はXSLTにいくつかの問題があることに注意してください。具体的には、「年から年」などのノードを「年-年齢」という式と混同するのは簡単です(例:年から年齢を差し引く)
Richard Kennard

3
@RichardKennardその混乱はおそらく人間のレベルでのみですか?xsltの場合、演算子の周囲に必要なスペース(?)は明確で明確な区別を提供します、正しいですか?
Karl Kieninger、2013

1
確かに、@ KarlKieningerですが、人間レベルでの混乱は大きな懸念事項です。以下の拡張された回答を参照してください。
Richard Kennard

64

重要ではありませんが、要素にはPascalCaseを、属性にはcamelCaseを常に使用しています。

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

31

正式な推奨事項はありません。

XMLは、ドキュメント保持し、異種システム間で情報交換するという2つの目的で設計されたため、それを使用するアプリケーションと一致できるように設計されました。

したがって、.Net XMLはProperCasing(ウィットネスXAML)を使用する傾向がありますが、他のXMLはcamelCasing、python_conventions、dot.naming、さらにはCOBOL-CONVENTIONSさえ使用します。W3Cは、小文字とダッシュとかなりのビット(たとえば、XSLT)または単に小文字の単語と一緒に(たとえば、MathML)好きです。

[Shift]キーの使用が減ることを意味するので、すべての小文字で下線は不要です。私の指は少し怠惰です。:)


2
それが「情報交換」の目的を持っていれば、命名規則の標準が絶対に望まれるようです。これは、複数の特定の実装で使用されるドキュメントにも適用されます(たとえば、1回限りのシリアル化ではありませんでした)。

25

Metro Smurfの回答に追加します。

National Information Exchange Model(NIEM:http : //en.wikipedia.org/wiki/National_Information_Exchange_Model)は次のように使用するように言っています:

  • 要素の上部キャメルケース(PascalCase)。
  • (下)属性のcamelCase。

NIEMは、いくつかの標準への準拠を検討している場合に適したオプションです。


1
以下は、属性と要素の命名規則を説明したNIEMドキュメントです。niem.gov/ documentsdb / Documents
Technical

私はそれが古いです知っているが、上記のリンクが壊れているが、このリンクは、要素/ AttrubutesためNIEM規則に関する詳細を更新しているようだ:reference.niem.gov/niem/specification/naming-and-design-rules/...
CajunCoding

13

上記のコメントを拡大するに「ハイフン付きの小文字」を使用すると、XSLTでいくつかの問題が発生します。具体的には、「年齢からの年」と呼ばれるノードを「年-年齢」という式と混同するのは簡単です(たとえば、年から年齢を引く)。

@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

上記のコードでは、減算演算子の前に少なくとも1つのスペースを置く必要がありますが、加算演算子にはそのような要件はありません。

<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

単一のスペースの存在は上記の出力を変更しますが、どちらのバリアントもエラーではありません。


3
売れた。さらに、MS .NETコード生成ツール(xsd.exe)は、逆シリアル化クラスを作成するときにハイフンを削除するだけです。したがって、代わりに「alpha-beta」のようなプロパティがある場合、「alphabeta」を取得します。したがって、名前が正確に翻訳されるだけでなく、読みづらくなります。また、MS SQLハイフンを使用してxmlを作成する必要がある場合も、そこに苦労します。MS固有のものは標準を規定すべきではありませんが、それは考慮事項として数えることができると私が思うに十分に広く使用されています。そしてそれは私をアンダースコアで区切られた小文字または混合された大文字に向けます。
Karl Kieninger、2013年

1
XSD.exeがほとんどのプロパティにXmlElementAttributeを追加するように見え、ハイフンがある場合、明確にするために最初のパラメーターとしてElementName文字列を明示的に追加します。私が見つけた問題は、.NETライブラリによっては、これは問題にならない可能性があることです。一部のシステムでは、要素はまだ非直列化されません。Win7のVS2012で動作しますが、2008サーバーではEXEとして実行されません。
David Storfer、2015

13

いくつかの規格で使用されているルールの例については、UN / CEFACT XML命名および設計ルールの技術仕様バージョン3.0ページ23を参照してください。

詳細(2009年12月17日付けバージョン3.0の23ページから):

  • LowerCamelCase(LCC)は、属性の命名に使用する必要があります。
  • 要素とタイプの命名には、UpperCamelCase(UCC)を使用する必要があります。
  • 要素、属性、および型の名前は、概念自体が複数形でない限り、単数形でなければなりません。

他のリンク、スウェーデンのサイト


2
-1:リンクが壊れています-おそらく内部URLですか?修正してください。反対票を削除します。
John Saunders

3
確かに興味深いですが、この特定のセクション/ページで引用されたドキュメントは、このスキーマに準拠するパーサー/ xmlドキュメントではなく、XML スキーマのルールを確立します。これらは2つの異なるものです。
MrCC、2016年

LowerCamelCaseとUpperCamelCaseの違いを知りたい人のために:mySettingNameはLowerCamelCaseの例(lowerCamelCaseを呼び出す方が賢明かもしれません)であり、MySettingNameはUpperCamelCaseの例です。
Jinlye


4

XMLケーシングの本来の意図は、ハイフンを含む小文字でした。大文字と小文字が区別され、その規則に従う必要はありません。したがって、好きなように実行できます。引用はありません。申し訳ありません。


1

HTMLが「標準的に」大文字を使用するとは言いません。元々大文字は、HTMLをコンテンツから視覚的に簡単に区別するために使用されていたと思います。最近の構文強調表示では、それは必要ありません。

私は小文字の方に向きを変え、必要に応じてダッシュを付けます(タイプするのも速い)。XMLで大文字と小文字を混在させることは、私には間違っていると感じています。


HTMLは大文字小文字を区別しません。これは同じXML / XHTMLではありません。

-2

ラクダ事件が私の票を得た。

引用された例については、おそらくこの質問は人々が引用するリンクになる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.