Eleman isimleriyle ilgili durum kuralları?


120

XML'de eleman kasası hakkında herhangi bir resmi tavsiye var mı?

XHTML'nin küçük harfli öğe adları kullandığını biliyorum (standart olarak büyük harf kullanan ancak büyük / küçük harfe duyarlı olmayan HTML'nin tersine).

Ama genel içerik için XML'den bahsediyorum.

küçük harfe:

<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>

BÜYÜK HARF:

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

Not: Fikirlerden ziyade alıntı yapılan yönergeleri arıyorum. Ancak en fazla oy alan görüş bir kılavuz olarak kabul edilebilir.


Yanıtlar:


88

W3C'den kaynaklanan çoğu XML standardı, kısa çizgi ile küçük harf kullanma eğilimindedir.

XML'i, W3C standartlarının teşvik etmeye çalıştığı, platformdan bağımsız belgeler için bir format olarak görmek ile XML'i platforma özgü bir nesne grafiğinin serileştirilmesi olarak gören XAML gibi diller arasında felsefi bir ayrım vardır.

XML'i platformdan bağımsız bir belge formatı olarak değil, uygulamaya özgü bir serileştirme olarak kullanıyorsanız, kendinizi biraz zahmetten kurtarabilir ve XML adları ile platforma özgü adlar arasında 1: 1 bir yazışmaya sahip olabilirsiniz. Ancak hemen hemen tüm diğer nesne grafik formatları, bu amaç için XML'den daha iyidir.

Eğer öyleyseniz, XHTML, XSLT, SVG, XProc, RelaxNG ve diğerlerine uymak isteyebilirsiniz.


7
bu, kısa çizgi içeren küçük harflerin önerildiği veya önerilmediği anlamına mı geliyor?
WarFox

9
@WarFox Kimsenin resmi bir tavsiyede bulunduğunu sanmıyorum. IME, birlikte çalışabilirlik için w3c'den gelen formatlar kısa çizgi stilinde olma eğilimindedir; Microsoft ve diğerlerinden gelen formatlar, bir uygulamaya sıkı sıkıya bağlı olma eğilimindedir ve uygulama için kullanılan dildeki nesnelerin adları için kongre. Sistemleri ayırmak için XML kullanıyorsanız, o zaman XML'inizi bu sistemin bir bileşeninin dil stiliyle birleştirmemek sizi nesneler yerine mesajlar açısından düşünmeye zorlayabilir ve bu nedenle küçük harf ve tire stilini öneririm.
Pete Kirkham

5
'Tire ile küçük harf' ifadesinin XSLT'de bazı sorunları olduğunu unutmayın. Özellikle, 'yaştan-yıl' olarak adlandırılan bir düğümü 'yıl - yaş' formülüyle karıştırmak kolaydır (örneğin, yıldan yaşı çıkarın)
Richard Kennard,

3
@RichardKennard Bu karışıklık muhtemelen sadece insan seviyesinde mi? Xslt için operatörün etrafındaki gerekli boşluklar (?) Açık ve kesin bir ayrım sağlar, doğru mu?
Karl Kieninger

1
@KarlKieninger bu doğru, ancak insan seviyesindeki kafa karışıklığı önemli bir endişe, IMHO. Aşağıdaki genişletilmiş cevabıma bakın.
Richard Kennard

64

Önemli olduğundan değil, ama her zaman Elements için PascalCase'e ve nitelikler için camelCase'e taraf oldum:

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

31

Resmi bir öneri yoktur.

XML, belgeleri tutmak ve farklı sistemler arasında bilgi alışverişi yapmak gibi ikiz amaçlarla tasarlandığından, onu kullanan uygulamalarla eşleşebilecek şekilde tasarlandı .

Dolayısıyla .Net XML, ProperCasing (XAML tanık) kullanma eğilimindeyken, diğer XML camelCasing, python_conventions, dot.naming ve hatta COBOL-CONVENTIONS kullanacaktır. W3C, kısa çizgi ile küçük harfleri (örn. XSLT) ya da sadece küçük harfleri bir araya getirmeyi (örn. MathML) seviyor gibi görünüyor.

Tüm küçük harfleri severim ve alt çizgi kullanmam, çünkü bu [Shift] tuşunun daha az kullanılması anlamına gelir ve parmaklarım biraz tembeldir. :)


2
Görünüşe göre "bilgi alışverişi" amacına sahip olsaydı, o zaman adlandırma kuralları için bir standart kesinlikle arzu edilirdi. Bu aynı zamanda birden fazla özel uygulama tarafından kullanılan tüm belgeler için de geçerli olacaktır (örneğin, bir defalık serileştirme olmayanlar).

25

Metro Şirin'in cevabına eklemek için.

Ulusal Bilgi Değişim Modeli (NIEM: http://en.wikipedia.org/wiki/National_Information_Exchange_Model ) şunları kullanmayı söylüyor:

  • Elemanlar için Üst CamelCase (PascalCase).
  • (alt) camelCase öznitelikleri için.

NIEM, bazı standartlara uymak istediğinizde iyi bir seçenek sunar.


1
Öznitelikler ve öğeler için adlandırma kurallarını açıkladıkları NIEM belgesi: niem.gov/documentsdb/Documents/Technical/NIEM-NDR-1-3.pdf
e1i45

Eski olduğunu biliyorum, ancak yukarıdaki bağlantı bozuk, ancak bu bağlantı Elements / Attrubutes için NIEM kuralıyla ilgili güncellenmiş ayrıntılara sahip gibi görünüyor: reference.niem.gov/niem/specification/naming-and-design-rules/…
CajunCoding

13

Yukarıdaki yorumumu genişletmek gerekirse : 'tire ile küçük harf' kullanımının XSLT'de bazı sorunları vardır. Spesifik olarak, örneğin 'yaştan-yıl' olarak adlandırılan bir düğümü 'yıl - yaş' formülüyle karıştırmak kolaydır (örneğin, yıldan yaşı çıkarın).

@KarlKieninger'in işaret ettiği gibi, bu sadece insan seviyesinde bir problemdir ve XSLT ayrıştırıcısı için değildir. Bununla birlikte, bu genellikle bir hata üretmeyeceğinden , standart olarak 'tireli küçük harf' kullanmak sorun ister, IMHO.

İlgili bazı örnekler:

<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

Yukarıdaki kodda, bir çıkarma operatöründen önce en az bir boşluk koymanız gerekir, ancak toplama operatörü için böyle bir gereksinim yoktur.

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

Ancak yukarıdakileri okumanın ne kadar kafa karıştırıcı olduğuna dikkat edin!

<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

Tek bir boşluğun varlığı yukarıdaki çıktıyı değiştirir, ancak hiçbir varyant bir hata değildir.


3
Satıldı. Ek olarak, MS .NET kod oluşturma aracı (xsd.exe) seriyi kaldırma sınıfları oluşturduğunda kısa çizgileri bırakacaktır. Yani bunun yerine "alfa-beta" gibi özellikler varsa "alfabe" elde edersiniz. Yani isimler sadece tam olarak tercüme edilmiyor, okunması da daha zor. Ve MS SQL tireleri ile xml oluşturmanız gerekiyorsa, burada da bir sıkıntı vardır. MS'e özgü şeyler bir standart belirlememelidir, ancak yeterince geniş kullanımdadır ki bunun bir değerlendirme olarak sayılabileceğini düşünüyorum. Ve beni alt çizgi ile sınırlandırılmış küçük harf veya karışık harfe yönlendiriyor.
Karl Kieninger

1
Görünüşe göre XSD.exe artık çoğu özelliğe bir XmlElementAttribute ekliyor ve bir tire varsa, açıklığa kavuşturulması için ElementName dizesini ilk parametre olarak açıkça ekler. Bulduğum sorun şu ki, .NET kitaplıklarınıza bağlı olarak bu önemli olmayabilir - öğe hala bazı sistemlerde seriyi kaldırmayacaktır. Win7'de VS2012'de çalışır, ancak 2008 Sunucusunda EXE olarak çalışmaz.
David Storfer

13

Çeşitli standartlarda kullanılan bazı örnek kurallar için UN / CEFACT XML Adlandırma ve Tasarım Kuralları Teknik Spesifikasyon Sürüm 3.0 sayfa 23'e bakın.

Özellikler (17 Aralık 2009 tarihli Sürüm 3.0'ın 23. sayfasından itibaren):

  • LowerCamelCase (LCC) öznitelikleri adlandırmak için KULLANILMALIDIR.
  • UpperCamelCase (UCC) öğeleri ve türleri adlandırmak için KULLANILMALIDIR.
  • Kavramın kendisi çoğul olmadığı sürece eleman, öznitelik ve tür adları tekil biçimde OLMALIDIR.

( diğer bağlantı, İsveç sitesi )


2
-1: bağlantınız bozuk - belki de dahili bir URL? Lütfen düzeltin, olumsuz oyu kaldıracağım.
John Saunders

3
Kesinlikle ilginç olsa da, bu belirli bölüm / sayfada alıntılanan belge, bu şemaya uyan ayrıştırıcı / xml belgeleri değil, XML Şemaları için kurallar belirler . Bunlar iki farklı şey.
MrCC

LowerCamelCase ve UpperCamelCase arasındaki farkın ne olduğunu merak eden herkes için: mySettingName, LowerCamelCase'in bir örneğidir (altCamelCase'i çağırmak daha akıllıca olabilir) ve MySettingName bir UpperCamelCase örneğidir.
Jinlye


4

XML büyük / küçük harf kullanımı için orijinal amaç, kısa çizgilerle küçük harftir. Büyük / küçük harfe duyarlıdır ve bu kurala uymanızı gerektirmez - böylece istediğinizi yapabilirsiniz. Üzgünüm alıntı yapmadım.


1

HTML'nin "kanonik olarak" büyük harf kullandığını söyleyemem. Bence HTML'yi içerikten görsel olarak daha kolay ayırmak için büyük harf kullanıldı. Bugünlerde sözdizimi vurgulamasıyla bu gerekli değil.

Gerekirse kısa çizgilerle küçük harfe yöneliyorum (yazmak da daha hızlı). XML'de durum karıştırmak bana yanlış geliyor.


HTML büyük / küçük harften bağımsızdır. Bu aynı XML / XHTML değil.

-2

Deve davası oyumu alır.

Verilen örneklere gelince, belki bu soru insanların atıfta bulunduğu bağlantıdan gelebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.