RSS და Atom ფიდების სტრუქტურული ვალიდაცია
ვებგვერდის ოპერატორებს, კონტენტის გამომცემლებს, დეველოპერებსა და გუნდებს, რომლებიც ახორციელებენ RSS/Atom ფიდების მიგრაციას, ხშირად ესაჭიროებათ მონაცემთა სინტაქსური სისწორის შემოწმება. RSS ფიდის ვალიდატორი არის სპეციალიზებული ინსტრუმენტი, რომელიც აანალიზებს წარმოდგენილ XML შიგთავსს, რათა დაადგინოს მისი ზუსტი ფორმატი, დაამუშაოს ჩანაწერები და გამოავლინოს ნებისმიერი პრობლემა, რომელიც დაკავშირებულია ფიდის სტრუქტურასთან, სავალდებულო ველებთან და ბმულების მითითებებთან.
ინსტრუმენტი მუშაობს უშუალოდ მომხმარებლის ბრაუზერში. დამუშავების პროცესში მონაცემები არ იტვირთება და არ ინახება სერვერზე, რაც უზრუნველყოფს მონაცემთა ლოკალურ დამუშავებას. ვალიდატორი განკუთვნილია RSS 2.0 და Atom 1.0 ფორმატების შესამოწმებლად. იგი იღებს მაქსიმუმ 500,000 სიმბოლოს თითო შემოწმებაზე.
RSS 2.0 ფიდების სტრუქტურული წესები და მოთხოვნები
RSS 2.0 სტანდარტის ვალიდაციისას ინსტრუმენტი ეყრდნობა მკაცრ სტრუქტურულ წესებს. ფიდი უნდა შეიცავდეს ძირეულ ელემენტს და ზუსტად განსაზღვრულ იერარქიას.
- არხის რაოდენობა: RSS დოკუმენტი უნდა შეიცავდეს ზუსტად ერთ პირდაპირ
<channel>ელემენტს. თუ აღმოჩენილია სხვა რაოდენობა, სისტემა აჩვენებს შეცდომას: "RSS უნდა შეიცავდეს ზუსტად ერთ პირდაპირ <channel>-ს; აღმოჩნდა ‹count›.". - სავალდებულო ველები: თითოეული ელემენტისთვის მოწმდება აუცილებელი სტრუქტურული კომპონენტები. თუ რომელიმე მათგანი აკლია, გამოიყენება შეტყობინება: "დაამატეთ საჭირო
‹field›.". - RSS item-ების ვალიდაცია: თითოეული ჩანაწერისთვის (item) სავალდებულოა სათაურის ან აღწერის არსებობა (
title-or-descriptionწესი). გარდა ამისა, ვალიდატორი კითხულობს და ამოწმებს შემდეგ ველებს:GUID(უნიკალური იდენტიფიკატორი)link(ბმული)publication date(გამოქვეყნების თარიღი).
თუ რომელიმე ველის რაოდენობა აჭარბებს დაშვებულ ლიმიტს, სისტემა მიუთითებს: "დატოვეთ ზუსტად ერთი ‹field›; აღმოჩნდა ‹count›.".
Atom 1.0 სტანდარტის სპეციფიკა და xml:base მექანიზმი
Atom 1.0 ფორმატს გააჩნია განსხვავებული სტრუქტურული მოთხოვნები, რომლებსაც ვალიდატორი დეტალურად ამოწმებს. განსაკუთრებული ყურადღება ეთმობა იდენტიფიკატორებს, ავტორობის მემკვიდრეობითობას და ბმულების სტრუქტურას.
იდენტიფიკატორები და ბმულები
Atom ფიდში გამოყენებული ID უნდა იყოს აბსოლუტური IRI. ფარდობითი იდენტიფიკატორების გამოყენებისას სისტემა აჩვენებს შეცდომას: "‹field›-ისთვის გამოიყენეთ აბსოლუტური IRI; ფარდობითი იდენტიფიკატორები სწორი Atom ID-ები არ არის.". დუბლირებული იდენტიფიკატორების აღმოჩენისას გამოიყენება შეტყობინება: "ეს ID იმეორებს მნიშვნელობას, რომელიც პირველად ‹first› ხაზზე გამოჩნდა.".
ფარდობითი ბმულების რეზოლუცია
Atom სტანდარტში ფარდობითი მიმართვების გადასაჭრელად გამოიყენება xml:base ატრიბუტი. ვალიდატორი აანალიზებს ბმულის შემცველ ველებს და განსაზღვრავს მათ მნიშვნელობას xml:base-ზე დაყრდნობით. თუ ბმულის რეზოლუცია ვერ ხერხდება აბსოლუტური მისამართის არარსებობის გამო, სისტემა აჩვენებს შეცდომას: "‹field›-ისთვის გამოიყენეთ აბსოლუტური მისამართი; ფარდობითი შეიძლება იყოს მხოლოდ Atom მითითება, რომელსაც გამოსადეგი xml:base აქვს.".
Atom ჩანაწერების (entry) წესები
თითოეული Atom entry-სთვის მოწმდება შემდეგი პარამეტრები:
- ID და სათაური: თითოეულ ჩანაწერს უნდა ჰქონდეს უნიკალური ID და სათაური (title).
- განახლების თარიღი: სავალდებულოა
updatedველის არსებობა. - ავტორობის მემკვიდრეობა (author inheritance): თუ ჩანაწერს არ გააჩნია მითითებული ავტორი, სისტემა ამოწმებს ავტორის არსებობას ფიდის დონეზე. წესის დარღვევისას გამოიყენება შეტყობინებები: "დაამატეთ <author> ფიდს ან პირდაპირი <author> თითოეულ ჩანაწერს." ან "დაამატეთ <author> ამ ჩანაწერს, მის <source>-ს ან ფიდს.".
- ალტერნატიული ბმულები (alternate links): თუ Atom ჩანაწერს არ გააჩნია ჩაშენებული შიგთავსი, სავალდებულოა ალტერნატიული ბმულის მითითება: "დაამატეთ alternate <link>, როდესაც Atom ჩანაწერს ჩაშენებული <content> არ აქვს.".
- შიგთავსის კონფლიქტები: როდესაც გამოიყენება საგარეო წყარო
srcატრიბუტით, ჩაშენებული ტექსტი უნდა წაიშალოს: "როდესაც <content> იყენებს src-ს, წაშალეთ მისი ჩაშენებული ტექსტი და შვილობილი ელემენტები.". თუ შიგთავსი გარეა ან არ იკითხება ტექსტად, სავალდებულოა მოკლე აღწერის დამატება: "დაამატეთ <summary>, როდესაც Atom content გარეა ან ტექსტად ვერ იკითხება.".
შეცდომების იდენტიფიცირება და ვალიდაციის ლიმიტები
ინსტრუმენტი ახდენს XML სინტაქსის ანალიზს და აჩვენებს ზუსტ ადგილს (ხაზი და სვეტი), სადაც დაფიქსირდა დარღვევა.
| შეცდომის ტიპი | სისტემური შეტყობინება | აღწერა / მოქმედება |
|---|---|---|
| DOCTYPE დეკლარაცია | "ამ ფიდის შემოწმებამდე წაშალეთ DOCTYPE დეკლარაცია." | უსაფრთხოებისა და თავსებადობის გამო DOCTYPE არ დაიშვება. |
| დაზიანებული XML | "შეასწორეთ დაზიანებული XML და ხელახლა შეამოწმეთ." | არასწორად გახსნილი/დახურული ტეგები ან სინტაქსური ხარვეზები. |
| არასწორი ფორმატი | "გამოიყენეთ RSS 2.0 <rss> დოკუმენტი ან Atom 1.0 <feed> დოკუმენტი." | შეყვანილი მონაცემები არ შეესაბამება მხარდაჭერილ ფორმატებს. |
| ვერსიის შეუსაბამობა | "ეს ვალიდატორი მხარს უჭერს ‹format› ‹expected›-ს; აღმოჩენილია ‹actual›." |
აღმოჩენილია ძველი ან შეუსაბამო ვერსია. |
| არასწორი ბმული | "შეასწორეთ ‹field›; ეს ბმული ვერ მუშავდება როგორც URL ან URI მითითება." |
ბმულის ფორმატი არასწორია. |
| არასწორი თარიღი | "გამოიყენეთ რეალური თარიღი ამ ფიდისთვის საჭირო ფორმატში." | თარიღი არ შეესაბამება RFC 822 (RSS) ან RFC 3339 (Atom) სტანდარტებს. |
ვალიდაციის პროცესში მოქმედებს გარკვეული შეზღუდვები. თუ პროცესი დროში გაიწელა, გამოჩნდება შეტყობინება: "ვალიდაციას ძალიან დიდი დრო დასჭირდა. სცადეთ უფრო მცირე ფიდი.". იმ შემთხვევაში, თუ ანალიზი საერთოდ ვერ დასრულდა, სისტემა აჩვენებს ტექსტს: "ვალიდაცია ვერ დასრულდა.".
ანგარიშის მაქსიმალური ტევადობა შეზღუდულია: სისტემა აჩვენებს მაქსიმუმ 200 პრობლემას და 100 ჩანაწერს. ლიმიტის გადაჭარბებისას გამოიყენება შესაბამისი აღნიშვნა მონაცემთა შეკვეცის შესახებ.
სტრუქტურული ვალიდაციის შედარება კონტენტის შემოწმებასთან
მნიშვნელოვანია ერთმანეთისგან გაიმიჯნოს სტრუქტურული ვალიდაცია და კონტენტის სრული შემოწმება. მოცემული ინსტრუმენტი ახორციელებს მხოლოდ სტრუქტურისა და ფორმატის გავრცელებული წესების ანალიზს.
ვალიდატორი არასოდეს ხსნის ფიდში მითითებულ URL მისამართებს. ეს ნიშნავს, რომ შემდეგი პარამეტრები არ მოწმდება:
- სამიზნე სერვერების ხელმისაწვდომობა.
- გადამისამართებები (redirects).
- SSL/TLS სერტიფიკატების ვალიდურობა.
- დანიშნულების გვერდების რეალური შიგთავსი.
შესაბამისად, წარმატებული ვალიდაცია არ ადასტურებს, რომ შიგთავსი არის აბსოლუტურად ზუსტი, უსაფრთხო, ყველა მკითხველის მიერ მიღებული ან მზადაა გამოსაქვეყნებლად.
ხშირად დასმული კითხვები
ფიდის რომელ ფორმატებს უჭერს მხარს ეს ვალიდატორი?
იგი ამოწმებს მიმდინარე RSS 2.0 და Atom 1.0 დოკუმენტებს. ძველი RSS, RDF/RSS 1.0 და Atom 0.3 ფიდები ამოიცნობა, მაგრამ არ შემოწმდება არასწორი წესებით.
ხსნის ან ამოწმებს ბმულებს ფიდში?
იგი ამუშავებს ბმულის შემცველ ველებს და Atom-ის ფარდობით მითითებებს xml:base-ით განსაზღვრავს. URL-ებს არასოდეს ხსნის, ამიტომ ხელმისაწვდომობა, გადამისამართებები, სერტიფიკატები და დანიშნულების შიგთავსი არ მოწმდება.
ჩანაწერის რომელი ველები მოწმდება?
RSS item-ებისთვის მოწმდება title ან description და იკითხება GUID, link და გამოქვეყნების თარიღი. Atom entry-ებისთვის მოწმდება ID, title, updated, author-ის მემკვიდრეობა, alternate link-ები და content ან summary წესები.
რატომ მივიღე შეცდომა DOCTYPE დეკლარაციის შესახებ?
უსაფრთხოებისა და სტანდარტებთან თავსებადობის უზრუნველსაყოფად, ფიდის შემოწმებამდე აუცილებელია DOCTYPE დეკლარაციის ამოღება XML კოდიდან.