XML'de, alt öğeleri kullanmaya özelliklerini kullanın ve ne zaman ne zaman kurallar yoktur.
Elementler vs Öznitelikler Kullanımı
Veri alt öğeleri veya niteliklerini muhafaza edilebilir.
Bu örneklerde bir göz atın:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
Birinci örnek cinsel bir özniteliktir. Geçen olarak, seks çocuk unsurdur. Her iki örnekte, aynı bilgiyi sağlarlar.
alt öğelerini kullanmak özelliklerini kullanın ve ne zaman ne zaman kural yoktur. Benim deneyim nitelikleri HTML kullanışlı olmasıdır, ancak XML bunları önlemek için çalışmalısınız. bilgi verileri gibi hissediyorsa alt öğelerini kullanın.
Favori Yolu
I like to store data in child elements.
Aşağıdaki üç XML belgeleri tam olarak aynı bilgileri içerir:
Bir tarih özellik ilk örnekte kullanılır:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Bir tarih eleman ikinci örnekte kullanılan:
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Genişletilmiş bir tarih eleman üçüncü kullanılır: (THIS IS MY FAVORITE) :
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
özelliklerini kullanmaktan kaçının?
Eğer özelliklerini kullanmaktan kaçınmak gerekir mi?
özelliklerle ilgili sorunlar bazıları şunlardır:
- özelliklerin birden çok değeri içeremez (child elements can)
- nitelikleri kolayca genişletilebilir değildir (for future changes)
- nitelikler yapıları tarif edemez (child elements can)
- nitelikleri program kodu tarafından manipüle daha zordur
- değerler DTD karşı test etmek kolay değildir öznitelik
Eğer veriler için kaplar gibi özelliklerini kullanmak, okumak ve bakımı zor olan belgelerle sonunda. Kullanmayı deneyin elements verileri tanımlamak için. Veri ile ilişkili olmayan bilgiler veren tek bağlıyor.
Sonunun böyle yapmayın (this is not how XML should be used) :
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Benim Özellik kuralın bir istisnası
Kurallar daima istisnaları vardır.
Özellikler hakkında Kuralım bir istisnası vardır:
Bazen elemanlarına ID referansı atar. Bu kimlik referansları ADI kadar aynı şekilde XML öğelerine erişmek için kullanılabilir veya kimlik HTML bağlıyor. Bu örneği gösterir:
<messages>
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
Bu örneklerde kimlik sadece bir sayaç veya benzersiz bir tanımlayıcı, XML dosyasındaki farklı notlar tespit etmek değil, nota verilerin bir parçasıdır.
Ne ben burada söylemeye çalışıyorum o meta veriler (data about data) nitelikleri olarak muhafaza edilmelidir ve bu verilerin kendisi elemanlar olarak muhafaza edilmelidir.