Konvensi kasus pada nama elemen?

120

Apakah ada rekomendasi resmi tentang casing elemen dalam XML?

Saya tahu XHTML menggunakan nama elemen huruf kecil (sebagai lawan dari HTML yang secara kanonik menggunakan huruf besar tetapi tidak peka huruf besar-kecil.)

Tapi saya berbicara tentang XML untuk konten umum.

huruf kecil:

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

tas unta:

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

PascalCase:

<Customer> 
   <AccountNumber>619</AccountNumber>
   <Name>Shelby Lake</Name>
</Customer>

HURUF BESAR:

<CUSTOMER> 
   <ACCOUNTNUMBER>619</ACCOUNTNUMBER>
   <NAME>Shelby Lake</NAME>
</CUSTOMER>

Catatan: Saya mencari pedoman yang dikutip daripada opini. Tapi opini dengan suara terbanyak bisa dianggap sebagai pedoman.

Ian Boyd
sumber
1
kemungkinan duplikat Apakah ada konvensi penamaan standar untuk elemen XML?
Basil Bourque

Jawaban:

88

Kebanyakan standar XML yang berasal dari W3C cenderung menggunakan huruf kecil dengan tanda hubung.

Ada perbedaan filosofis antara melihat XML sebagai format untuk dokumen platform netral, yang coba didorong oleh standar W3C, dan bahasa seperti XAML yang melihat XML sebagai serialisasi grafik objek platform tertentu.

Jika Anda tidak menggunakan XML sebagai format dokumen netral platform, tetapi sebagai serialisasi khusus aplikasi, maka Anda mungkin juga tidak perlu repot dan memiliki korespondensi 1: 1 antara nama XML dan nama platform tertentu. Tetapi hampir semua format grafik objek lain lebih baik daripada XML untuk tujuan itu.

Jika ya, maka Anda mungkin ingin menyesuaikan dengan XHTML, XSLT, SVG, XProc, RelaxNG, dan lainnya.

Pete Kirkham
sumber
7
jadi apakah itu berarti huruf kecil dengan tanda hubung direkomendasikan atau tidak direkomendasikan?
WarFox
9
@WarFox Saya rasa tidak ada yang membuat rekomendasi resmi. IME, format yang berasal dari w3c untuk interoperabilitas cenderung menggunakan gaya tanda hubung; format yang berasal dari Microsoft dan beberapa lainnya cenderung terkait erat dengan implementasi dan konvensi untuk nama objek dalam bahasa yang digunakan untuk implementasi. Jika Anda menggunakan XML untuk memisahkan sistem, maka tidak menggabungkan XML Anda dengan gaya bahasa salah satu komponen dari sistem itu dapat memaksa Anda untuk berpikir dalam istilah pesan daripada objek, jadi saya akan merekomendasikan huruf kecil dan gaya tanda hubung.
Pete Kirkham
5
Perhatikan bahwa 'huruf kecil dengan tanda hubung' memiliki beberapa masalah di XSLT. Secara khusus, mudah untuk membingungkan node yang disebut, katakanlah, 'year-from-age' dengan formula 'year - age' (misalnya, kurangi usia dari tahun)
Richard Kennard
3
@RichardKennard Apakah kebingungan itu hanya mungkin terjadi pada tingkat manusia? Untuk xslt spasi yang diperlukan (?) Di sekitar operator memberikan perbedaan yang jelas dan tidak ambigu, benar?
Karl Kieninger
1
@KarlKieninger itu benar, tetapi kebingungan di tingkat manusia adalah masalah yang signifikan, IMHO. Lihat jawaban saya yang diperluas di bawah ini.
Richard Kennard
64

Bukan itu penting, tapi saya selalu memilih PascalCase for Elements dan camelCase untuk atribut:

<Root>
  <ParentElement attributeId="1">
    <ChildElement attributeName="foo" />
  </ParentElement>
</Root>
Metro Smurf
sumber
31

Tidak ada rekomendasi resmi.

Karena XML dirancang dengan tujuan ganda untuk menyimpan dokumen dan bertukar informasi antara sistem yang berbeda , XML dirancang sedemikian rupa agar dapat mencocokkan aplikasi yang menggunakannya.

Jadi .Net XML cenderung menggunakan ProperCasing (saksi XAML), sedangkan XML lainnya akan menggunakan camelCasing, python_conventions, dot.naming, dan bahkan COBOL-CONVENTIONS. W3C tampaknya menyukai huruf kecil-dengan-tanda hubung-cukup-sedikit (misalnya XSLT) atau hanyalowercasewordssmashedtogether (misalnya MathML).

Saya suka semua huruf kecil dan tidak ada garis bawah, karena itu berarti lebih sedikit penggunaan tombol [Shift], dan jari saya sedikit malas. :)

lavinio
sumber
2
Tampaknya jika itu memiliki tujuan untuk "bertukar informasi" maka standar untuk konvensi penamaan akan benar-benar diinginkan. Ini juga berlaku untuk semua dokumen yang digunakan oleh lebih dari satu implementasi khusus (misalnya yang bukan serialisasi satu kali).
25

Untuk menambah jawaban Metro Smurf.

Model Pertukaran Informasi Nasional (NIEM: http://en.wikipedia.org/wiki/National_Information_Exchange_Model ) mengatakan untuk menggunakan:

  • Upper CamelCase (PascalCase) untuk elemen.
  • (lebih rendah) camelCase untuk atribut.

NIEM menjadi pilihan yang baik ketika Anda ingin menyesuaikan dengan beberapa standar.

Koert van Kleef
sumber
1
Berikut adalah dokumen NIEM yang menjelaskan konvensi penamaan untuk atribut dan elemen: niem.gov/documentsdb/Documents/Technical/NIEM-NDR-1-3.pdf
e1i45
Saya tahu ini sudah tua, tetapi tautan di atas rusak, tetapi tautan ini tampaknya telah memperbarui detail mengenai konvensi NIEM untuk Elemen / Attrubut: referensi.niem.gov/niem/specification/naming-and-design-rules/…
CajunCoding
13

Untuk memperluas komentar saya di atas : penggunaan 'huruf kecil dengan tanda hubung' memiliki beberapa masalah di XSLT. Secara khusus, mudah untuk membingungkan node yang disebut, katakanlah, 'year-from-age' dengan formula 'year-age' (misalnya, kurangi usia dari tahun).

Seperti yang ditunjukkan oleh @KarlKieninger, ini hanya masalah di tingkat manusia dan bukan untuk parser XSLT. Namun karena ini sering tidak menghasilkan kesalahan , menggunakan 'huruf kecil dengan tanda hubung' sebagai standar akan menimbulkan masalah, IMHO.

Beberapa contoh terkait:

<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

Dalam kode di atas, Anda harus meletakkan setidaknya satu spasi sebelum operator pengurangan, tetapi tidak ada persyaratan untuk operator penjumlahan.

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

Tapi perhatikan betapa membingungkannya membaca di atas!

<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

Kehadiran satu spasi mengubah keluaran di atas, tetapi tidak ada varian yang merupakan kesalahan.

Richard Kennard
sumber
3
Terjual. Selain itu, alat pembuat kode MS .NET (xsd.exe) hanya akan menghilangkan tanda hubung saat membuat kelas deserialisasi. Jadi, jika properti seperti "alpha-beta" Anda mendapatkan "alphabeta". Jadi, bukan hanya nama-nama itu tidak diterjemahkan dengan tepat, tetapi juga lebih sulit dibaca. Dan jika Anda perlu membangun xml dengan tanda hubung MS SQL ada rasa sakit di sana juga. Hal-hal khusus MS seharusnya tidak menentukan standar, tetapi penggunaannya cukup luas sehingga saya pikir itu dapat dihitung sebagai pertimbangan. Dan itu mengarahkan saya ke huruf kecil yang dipisahkan garis bawah atau huruf kecil atau campuran.
Karl Kieninger
1
Sepertinya XSD.exe sekarang menambahkan XmlElementAttribute ke sebagian besar properti, dan jika ada tanda hubung secara eksplisit menambahkan string ElementName sebagai parameter pertama sehingga diklarifikasi. Masalah yang saya temukan adalah bahwa bergantung pada pustaka .NET Anda, ini mungkin tidak masalah - elemen tersebut masih tidak akan deserialisasi pada beberapa sistem. Ia bekerja di VS2012 di Win7, tetapi tidak berjalan sebagai EXE di Server 2008.
David Storfer
13

Lihat Aturan Desain dan Penamaan XML UN / CEFACT Spesifikasi Teknis Versi 3.0 halaman 23 untuk beberapa aturan contoh yang digunakan dalam beberapa standar.

Spesifik (dari halaman 23 Versi 3.0 tanggal 17 Desember 2009):

  • LowerCamelCase (LCC) HARUS digunakan untuk penamaan atribut.
  • UpperCamelCase (UCC) HARUS digunakan untuk memberi nama elemen dan tipe.
  • Nama elemen, atribut dan tipe HARUS dalam bentuk tunggal kecuali konsep itu sendiri jamak.

( tautan lain, situs Swedia )

oluies
sumber
2
-1: tautan Anda rusak - mungkin itu URL internal? Harap perbaiki, dan saya akan menghapus suara negatifnya.
John Saunders
3
Meskipun menarik, dokumen yang dikutip di bagian / halaman khusus ini menetapkan aturan untuk Skema XML , bukan dokumen parser / xml yang mengikuti skema ini. Ini adalah dua hal yang berbeda.
MrCC
Bagi siapa pun yang bertanya-tanya apa perbedaan antara LowerCamelCase dan UpperCamelCase: mySettingName adalah contoh LowerCamelCase (yang mungkin lebih pintar untuk memanggil lowerCamelCase), dan MySettingName adalah contoh dari UpperCamelCase.
Jinlye
12

Panduan gaya Google merekomendasikan (mungkin bahkan mengamanatkan) camelCase untuk semua nama elemen, serta nama atribut.

kencordero.dll
sumber
4

Maksud asli untuk casing XML adalah huruf kecil dengan tanda hubung. Ini peka huruf besar / kecil dan tidak mengharuskan Anda mengikuti konvensi itu - sehingga Anda dapat melakukan apa pun yang Anda inginkan. Saya tidak punya kutipan, maaf.

Adam Luter
sumber
1

Saya tidak akan mengatakan HTML "secara kanonik" menggunakan huruf besar. Saya pikir huruf besar awalnya digunakan untuk secara visual memisahkan HTML dari konten dengan lebih mudah. Dengan penyorotan sintaks saat ini, itu tidak perlu.

Saya mengarah ke huruf kecil, dengan tanda hubung jika perlu (lebih cepat untuk mengetik juga). Mencampur case dalam XML terasa salah bagi saya.

Kambing Tidak Puas
sumber
HTML adalah case-agnostic. Ini bukan XML / XHTML yang sama.
-2

Kasus unta mendapat suara saya.

Adapun contoh yang dikutip mungkin pertanyaan ini bisa datang dari tautan yang dikutip orang.

AnthonyWJones
sumber