4.1. Taşıyıcı Elemanlar
4.1.1. "atom:feed" Elemanı
"atom:feed" elemanı bir Atom Ulama Belgesinin belge (yani, tepe seviyeden) elemanıdır yani, ulam ile ilgili veri ve öteveri için bir taşıyıcıdır. Çocuk elemanları, öteveri elemanlarını takibeden sıfır veya daha fazla sayıda atom:entry elemanından oluşur.
atomFeed =
element atom:feed {
atomCommonAttributes,
(atomAuthor*
& atomCategory*
& atomContributor*
& atomGenerator?
& atomIcon?
& atomId
& atomLink*
& atomLogo?
& atomRights?
& atomSubtitle?
& atomTitle
& atomUpdated
& extensionElement*),
atomEntry*
}
Bu belirtim, atom:feed içindeki atom:entry elemanları arasında bir öncelik belirtmez.
Bu belirtim tarafından tanımlanan çocuk elemanlar (bu elemanların bazılarının varlığı gereklidir):
-
atom:feedelemanınınatom:entryçocuklarının her biri en azından bireratom:authorelemanı içermedikçe,atom:feedelemanlarının bir veya daha fazla sayıdaatom:authorelemanı içermesi gerekir *ZORUNLU*. -
atom:feedelemanları herhangi bir sayıdaatom:categoryelemanı içerebilir *SEÇİMLİK*. -
atom:feedelemanları herhangi bir sayıdaatom:contributorelemanı içerebilir *SEÇİMLİK*. -
atom:feedelemanlarının birden fazlaatom:generatorelemanı içermemesi gerekir *ZORUNLU*. -
atom:feedelemanlarının birden fazlaatom:iconelemanı içermemesi gerekir *ZORUNLU*. -
atom:feedelemanlarının birden fazlaatom:logoelemanı içermemesi gerekir *ZORUNLU*. -
atom:feedelemanlarının, ne eksik ne fazla tam olarak bir taneatom:idelemanı içermesi gerekir *ZORUNLU*. -
atom:feedelemanları, "self" değerli birrelözniteliği olan tek biratom:linkelemanı içermelidir *ÖNERİ*. Buatom:linkelemanının içeriği Atom Ulama Belgelerinin alınacağı, Atom ulamını sunan yerin tercihli adresidir (URI). -
atom:feedelemanları, "alternate" değerli birrelözniteliği olup aynı zamandatypevehreflangözniteliklerinde de aynı değerlere sahip birden fazlaatom:linkelemanı içermemelidir *ZORUNLU*. -
atom:feedelemanları, yukarıda açıklananlar dışında başkaatom:linkelemanları içerebilir *SEÇİMLİK*. -
atom:feedelemanlarının birden fazlaatom:rightselemanı içermemesi gerekir *ZORUNLU*. -
atom:feedelemanlarının birden fazlaatom:subtitleelemanı içermemesi gerekir *ZORUNLU*. -
atom:feedelemanlarının, ne eksik ne fazla tam olarak bir taneatom:titleelemanı içermesi gerekir *ZORUNLU*. -
atom:feedelemanlarının, ne eksik ne fazla tam olarak bir taneatom:updatedelemanı içermesi gerekir *ZORUNLU*.
Eğer bir Atom Ulama Belgesinde aynı atom:id değerli çok sayıda atom:entry elemanı görünüyorsa, bunlar aynı girdiyi ifade ediyor demektir. Bunların atom:updated zaman damgaları farklı olmalıdır *ÖNERİ*.
Eğer bir Atom Ulama Belgesi aynı atom:id ile çok sayıda girdi içeriyorsa, Atom İşlemcileri bunların tümünü göstermeyi seçebilecekleri gibi bir kısmını da gösterebilir. Tipik bir davranış, en yeni atom:updated zaman damgasını içeren girdiyi göstermek olurdu.
4.1.1.1. Metinsel İçeriğin Sağlanması
Deneyimler, ulamların metinsel içeriği içermesinin içermemesinden genelde daha faydalı olduğunu öğretmektedir. Bazı uygulamalar (tamamen metin dizinleri üretenler gibi), işlevlerini yerine getirebilmek için az da olsa metin veya (X)HTML içerik gerektirir. Ulam üreticilerinin bu gibi hususlardan haberi olması gerekir. Her atom:entry elemanının, içerdiği takdirde atom:title ve atom:content elemanlarının içeriğinin boş olmaması ve atom:content içermemesi halinde, boş olmayan bir atom:summary elemanı içermesi tercih edilmelidir. Bununla birlikte, bir atom:summary elemanının yokluğu bir hata değildir ve Atom İşlemcilerinin böyle bir yokluk durumunda başarısızlık göstermemesi gerekir *ZORUNLU*.
4.1.2. "atom:entry" Elemanı
atom:entry elemanı, girdi ile ilgili veri ve öteveri için bir taşıyıcı görevi görmesi bakımından başlıbaşına bir girdi içerir. Bir atom:feed elemanının bir çocuğu olarak karşımıza çıkabileceği gibi tek başına bir Atom Girdi Belgesinin belge (yani, tepe seviyeden) elemanı olarak da karşımıza çıkabilir.
atomEntry =
element atom:entry {
atomCommonAttributes,
(atomAuthor*
& atomCategory*
& atomContent?
& atomContributor*
& atomId
& atomLink*
& atomPublished?
& atomRights?
& atomSource?
& atomSummary?
& atomTitle
& atomUpdated
& extensionElement*)
}
Bu belirtim atom:entry elemanının çocukları arasında bir öncelik belirtmez.
Bu belirtim tarafından tanımlanan çocuk elemanlar (bu elemanların bazılarının varlığı gereklidir):
-
Bir
atom:entryelemanı içinde, biratom:authorelemanı içeren biratom:sourceelemanı veya bir Atom Ulama Belgesi içinde, kendiatom:authorelemanını içeren biratom:feedelemanı olmadıkçaatom:entryelemanlarının bir veya daha fazla sayıdaatom:authorelemanı içermesi gerekir *ZORUNLU*. -
atom:entryelemanları herhangi bir sayıdaatom:categoryelemanı içerebilir *SEÇİMLİK*. -
atom:entryelemanları birden fazla sayıdaatom:contentelemanı içermemelidir *ZORUNLU*. -
atom:entryelemanları herhangi bir sayıdaatom:contributorelemanı içerebilir *SEÇİMLİK*. -
atom:entryelemanlarının, ne eksik ne fazla tam olarak bir taneatom:idelemanı içermesi gerekir *ZORUNLU*. -
Hiç
atom:contentçocuğu olmayanatom:entryelemanlarının, değeri "alternate" olan birrelözniteliğine sahip en az biratom:linkelemanı olmalıdır *ZORUNLU*. -
atom:entryelemanları, "alternate" değerli birrelözniteliği olup aynı zamandatypevehreflangözniteliklerinde de aynı değerlere sahip birden fazlaatom:linkelemanı içermemelidir *ZORUNLU*. -
atom:entryelemanları, yukarıda açıklananlar dışında başkaatom:linkelemanları içerebilir *SEÇİMLİK*. -
atom:entryelemanları birden fazla sayıdaatom:publishedelemanı içermemelidir *ZORUNLU*. -
atom:entryelemanları birden fazla sayıdaatom:rightselemanı içermemelidir *ZORUNLU*. -
atom:entryelemanları birden fazla sayıdaatom:sourceelemanı içermemelidir *ZORUNLU*. -
atom:entryelemanları şu iki durumdan birinde biratom:summaryelemanı içermelidir *ZORUNLU*:-
atom:entryelemanı, bir "src" özniteliğine sahip (bu nedenle boştur) biratom:contentelemanı içeriyordur.
-
-
atom:entryelemanları birden fazla sayıdaatom:summaryelemanı içermemelidir *ZORUNLU*. -
atom:entryelemanlarının, ne eksik ne fazla tam olarak bir taneatom:titleelemanı içermesi gerekir *ZORUNLU*. -
atom:entryelemanlarının, ne eksik ne fazla tam olarak bir taneatom:updatedelemanı içermesi gerekir *ZORUNLU*.
4.1.3. atom:content Elemanı
atom:content elemanı bir girdiyi ya içerir ya da içeriğe bir bağlantı olur. atom:content elemanının içeriği lisana duyarlıdır.
atomInlineTextContent =
element atom:content {
atomCommonAttributes,
attribute type { "text" | "html" }?,
(text)*
}
atomInlineXHTMLContent =
element atom:content {
atomCommonAttributes,
attribute type { "xhtml" },
xhtmlDiv
}
atomInlineOtherContent =
element atom:content {
atomCommonAttributes,
attribute type { atomMediaType }?,
(text|anyElement)*
}
atomOutOfLineContent =
element atom:content {
atomCommonAttributes,
attribute type { atomMediaType }?,
attribute src { atomUri },
empty
}
atomContent = atomInlineTextContent
| atomInlineXHTMLContent
| atomInlineOtherContent
| atomOutOfLineContent
-
"
type" Özniteliği -
atom:contentelemanındatypeözniteliğinin değeri "text", "html" veya "xhtml" olabilir *SEÇİMLİK*. Bu mümkün olmazsa, değerin bir MIME ortam türü sözdizimine uygun olması *ZORUNLU* ama birleşik bir tür olmaması gerekir *ZORUNLU* ([MIMEREG] belgesinin 4.2.6. bölümüne bakınız). Eğer netypene desrcözniteliği sağlanmışsa, Atom İşlemcileri "text" değerli birtypeözniteliği varmış gibi davranmalıdır. -
"
src" Özniteliği -
atom:contentbirsrcözniteliğine sahip olabilir *SEÇİMLİK*, ancak, değerinin bir uluslararası adres (IRI) [RFC3987] olması gerekir *ZORUNLU*.srcözniteliği sağlanmışsa,atom:contentiçeriği boş olmalıdır *ZORUNLU*. Atom İşlemcileri içeriği almak için bu IRI'yi kullanabilir *SEÇİMLİK* veya uzak içeriği yoksaymayı ya da yerel içerikten farklı bir anlamda içermeyi seçebilir *SEÇİMLİK*.srcözniteliği sağlanmışsa,typeözniteliği de sağlanmalı *ÖNERİ* ancak değeri "text", "html" veya "xhtml" değil bir MIME ortam türü [MIMEREG] olmalıdır *ZORUNLU*. Değer tavsiye niteliğindedir; içeriği sağlayan sunucu ayrıca bir ortam türü de sağlıyorsa. sunucu tarafından sağlanan ortam türü yetkindir.
4.1.3.1. İşlem Modeli
Atom Belgelerinin aşağıdaki kurallara uygun olması gerekir *ZORUNLU*. Atom İşlemcilerinin atom:content içeriğini uygulanabilir olan ilk kurala göre yorumlaması gerekir *ZORUNLU*.
-
typedeğeri "text" ise,atom:contentçocuk elemanlar içermemelidir *ZORUNLU*. Böyle bir metnin insanlarca okunabilecek şekilde içerileceği düşünülür. Bu nedenle, Atom İşlemcileri fazla boşlukları atabilir ve metni hizalamak ve özel yazıtipleri kullanmak gibi tekniklerle göze daha hoş gösterebilir *SEÇİMLİK*. -
typedeğeri "html" ise,atom:contentçocuk elemanlar içermemeli *ZORUNLU* ve içerik HTML [HTML] olarak işlenmeye uygun olmalıdır *ÖNERİ*. HTML imleme öncelenmelidir; örneğin, "<br>" yerine "<br>" yazılmalıdır. HTML imleme, önceleme kaldırıldıktan sonra doğrudan bir HTML <DIV> elemanı içinde geçerli kalacak şekilde yapılmalıdır *ÖNERİ*. İçeriği gösteren Atom İşlemcileri imlemeyi gösterime yardımcı olarak kullanabilir *SEÇİMLİK*. -
typedeğeri "xhtml" ise,atom:contentçocuk eleman olarak tek bir XHTMLdivelemanı içermelidir *ZORUNLU*. İçerik, XHTML olarak işlenmeye elverişli olmalıdır *ÖNERİ*. XHTMLdivelemanının kendisi içeriğin parçası olarak ele alınmamalıdır *ZORUNLU*. İçeriği gösteren Atom İşlemcileri imlemeyi gösterime yardımcı olarak kullanabilir *SEÇİMLİK*. "&" ve "<" gibi karakterlerin öncelenmiş sürümleri imleme belirtmez, karakterlerin kendilerini ifade eder. -
typedeğeri bir XML ortam türü [RFC3023] ise veya "+xml" veya "/xml" (harf büyüklüğüne duyarsız) ile bitiyorsa,atom:contentçocuk elemanlar içerebilir *SEÇİMLİK* ancak, belirtilen ortam türünde işlenmeye elverişli olmalıdır *ÖNERİ*. Eğer "src" özniteliği sağlanmamışsa, bu normalde,atom:content'in belirtilen türdeki XML belgenin kök elemanı olarak tek bir çocuk eleman içerdiği anlamına gelir. -
typedeğeri "text/" (harf büyüklüğüne duyarsız) ile başlıyorsa,atom:contentçocuk elemanlar içeremez *ZORUNLU*. -
typeözniteliğinin diğer tüm değerleri içinatom:contentiçeriğinin [RFC3548] belgesinin 3. bölümünde açıklandığı gibi Base64 kodlu geçerli bir içerik olması gerekir *ZORUNLU*. Kodu çözüldüğünde, belirtilen ortam türünde işlenmeye elverişli olmalıdır *ÖNERİ*. Bu durumda,atom:contentiçinde, Base64 kodlamadaki karakterlerin önüne ve ardına boşluklar eklenmiş ve satırlar tek bir satır-sonu karakteri (U+000A) ile ayrılmış olabilir *SEÇİMLİK*.
4.1.4. Örnekler
XHTML içinde:
...
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
This is <b>XHTML </b> content.
</div>
</content>
...
<content type="xhtml">
<xhtml:div xmlns:xhtml="http://www.w3.org/1999/xhtml">
This is <xhtml:b>XHTML </xhtml:b> content.
</xhtml:div>
</content>
...
Aşağıdaki örnekte, XHTML isim alanının, belgenin başlarında "xh" önekine bağlandığı varsayılmıştır:
...
<content type="xhtml">
<xh:div>
This is <xh:b>XHTML </xh:b> content.
</xh:div>
</content>
...