Tiêu chuẩn Atom – Đặc tả định dạng xuất bản nội dung Atom 

Tiêu chuẩn Atom – Đặc tả định dạng xuất bản nội dung trên web Atom là tiêu chuẩn do Nhóm chuyên trách kỹ thuật Internet (Internet Engineering Task Force - IETF) duy trì, quản lý

Atom là một định dạng tài liệu dựa trên Ngôn ngữ đánh dấu mở rộng (XML - Extensible Markup Language) để mô tả danh mục các thông tin liên quan gọi là "nguồn cung cấp tin". Nguồn cung cấp tin được cấu thành từ nhiều mục tin, đi kèm mỗi mục tin là các thông tin về dữ liệu hoặc gọi là đặc tả dữ liệu. Mục đích sử dụng chính của Atom là xuất bản nội web, ví dụ như weblog hoặc các tiêu đề tin tức cho các trang web.

Trước khi có Atom, RSS (viết tắt của Really Simple Syndication và Rich Site Summary) làtiêu chuẩn xuất bản nội dung trên web phổ biến. Tháng 06/2003, Sam Ruby thiết lậpdiễn đàn để thảo luận về một định dạng xuất bản nội dung trên web mới để giải quyết những thiếu sót của RSS.

Dự thảo phiên bản Atom đầu tiên là Atom phiên bản 0.2 được ra đời vào đầu tháng07/2003. Tiếp theo, Atom phiên bản 0.3 được phát hành vào tháng 12/2003. Phiên bản này đã đạt được áp dụng rộng rãi trong nhiều công cụ cung cấp nội dung trên web, đặc biệt là nó đã được thêm vào một số dịch vụ liên quan đến Google, chẳng hạn như Blogger, Google News và Gmail.

Trong năm 2004, nhóm phát triển thảo luận về việc chuyển dự án Atom cho một cơ quan tiêu chuẩn như W3C (World Wide Web Consortium) hoặc IETF. Cuối cùng nhóm phát triển đã chọn IETF là tổ chức quản lý và duy trì tiêu chuẩn Atom.

Định dạng Atom v1.0 đã được IETF ban hành thành một tiêu chuẩn có tính chất khuyến nghị (Proposed Standard) vào tháng 12/2005, được đề xuất trong RFC 4287. Hiện nay tiêu chuẩn này vẫn chưa được chuẩn hóa.

Các tài liệu Atom

Trong RFC 3287 mô tả hai loại tài liệu Atom (Atom Document) là: Atom Feed Document (Tài liệu cung cấp Atom) và Atom Entry Document (Tài liệu mục tin Atom).

- Một Atom Feed Document là một biểu diễn của một nguồn cung cấp Atom, bao gồm dữ liệu đặc tả về nguồn cung cấp và một số hoặc tất cả mục tin liên quan với nó. Phần tử gốc của nó là phần tử atom:feed element.

- Một Atom Entry Document chỉ biểu diễn một mục tin Atom, bên ngoài   một nguồn cung cấp Atom.  Phần tử gốc của nó là phần tử atom:entry element.

   namespace atom = "http://www.w3.org/2005/Atom"

   start = atomFeed | atomEntry

- Cả hai loại Atom Documents đều được biểu diễn dưới dạng Tập thông tin XML (XML Information Set), được xuất bản dưới dạng XML 1.0 và được xác định với kiểu tập tin đa phương tiện "application/atom+xml".

- Atom Documents phải được biểu diễn đúng theo định dạng XML.

- Atom cũng cho phép sử dụng các Định danh tài nguyên được quốc tế hóa (Internationalized Resource Identifiers - IRI). Vì mỗi Định danh tài nguyên  thống nhất (Uniform Resource Identifier – URI) cũng là một IRI, do đó URI cũng được sử dụng kèm với IRI. Có hai vấn đề cần quan tâm ở đây là:

+ Khi một IRI không được gán cho một URI cho trước thì phải ánh xạ IRI thành một URI theo quy định.

+ Khi  một IRI đóng vai trò là một giá trị atom:id, nó không được ánh xạ.

- Bất kỳ phần tử nào được định nghĩa trong đặc tả này đều có thể có một thuộc tính xml:base. Khi xml:base được sử dụng trong một Atom Document, nó có chức năng như một URI cơ sở, việc thiết lập URI hoặc IRI cơ sở để giải quyết các vấn đề tham chiếu trong phạm vi của thuộc tính xml:base.

- Bất kỳ phần tử nào được định nghĩa trong đặc tả này đều có thể có một thuộc tính xml:lang dùng để xác định ngôn ngữ cho phần tử và các phần tử con.  Yêu cầu về nội dung và ngữ nghĩa của xml:lang được xác định trong XML 1.0.

atomCommonAttributes =

      attribute xml:base { atomUri }?,

      attribute xml:lang { atomLanguageTag }?,

      undefinedAttribute*

 

Các phương thức phổ biến trong Atom (Common Atom Constructs)

Nhiều phần tử của Atom chia sẻ một số cấu trúc dùng chung. Phần này mô tả những cấu trúc dùng chung và yêu cầu cho việc tham chiếu của các phần tử

Khi một phần tử được xác định bởi một phương thức, nó thừa kế những yêu cầu từ định nghĩa của phương thức đó.

- Phương thức văn bản (Text Constructs)

Một Text Construct chứa văn bản con người có thể đọc được. Nội dung của Text Construct là ngôn ngữ thông dụng. Cấu trúc của Text Construct như sau

   atomPlainTextConstruct =

      atomCommonAttributes,

      attribute type { "text" | "html" }?,

      text

 

   atomXHTMLTextConstruct =

      atomCommonAttributes,

      attribute type { "xhtml" },

      xhtmlDiv

 

   atomTextConstruct = atomPlainTextConstruct | atomXHTMLTextConstruct

- Phương thức người dùng (Person Constructs)

Một Person Construct là một phần tử để mô tả một người hoặc tổ chức hay một thực thể tương tự (gọi chung là người dùng).

atomPersonConstruct =

      atomCommonAttributes,

      (element atom:name { text }

       & element atom:uri { atomUri }?

       & element atom:email { atomEmailAddress }?

       & extensionElement*)

 

- Phương thức thời gian (Date Constructs)

Một Date Construct là một thành phần tuân theo quy định về thời gian trên Internet trong RFC 3339

   atomDateConstruct =

      atomCommonAttributes,

      xsd:dateTime

Ví dụ về Date Constructs:

   <updated>2003-12-13T18:30:02Z</updated>

   <updated>2003-12-13T18:30:02.25Z</updated>

   <updated>2003-12-13T18:30:02+01:00</updated>

   <updated>2003-12-13T18:30:02.25+01:00</updated>

Các phần tử trong Atom (Atom Elements)

- Phần tử đóng gói (Container Elements)

+ Phần tử "atom:feed" là phần tử văn bản của một Atom Feed Document, hoạt động như là một bao đóng cho dữ liệu đặc tả và dữ liệu đi kèm với nguồn cung cấp tin. Các phần tử con của nó chứa các phần tử dữ liệu đặc tả

   atomFeed =

      element atom:feed {

         atomCommonAttributes,

         (atomAuthor*

          & atomCategory*

          & atomContributor*

          & atomGenerator?

          & atomIcon?

          & atomId

          & atomLink*

          & atomLogo?

          & atomRights?

          & atomSubtitle?

          & atomTitle

          & atomUpdated

          & extensionElement*),

         atomEntry*

      }

 

+ Phần tử "atom:entry" biểu diễn cho từng mục tin, hoạt động như là một bao đóng cho dữ liệu đặc tả và dữ liệu đi kèm với mục tin. Phần tử này có thể là phần tử con của phần tử atom:feed hoặc có thể là phần tử văn bản của một Atom Entry Document.

   atomEntry =

      element atom:entry {

         atomCommonAttributes,

         (atomAuthor*

          & atomCategory*

          & atomContent?

          & atomContributor*

          & atomId

          & atomLink*

          & atomPublished?

          & atomRights?

          & atomSource?

          & atomSummary?

          & atomTitle

          & atomUpdated

          & extensionElement*)

      }

 

+ Phần tử "atom:content" có thể chứa hoặc trỏ đường dẫn đến nội dung của mục tin.

   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

 

- Phần tử dữ liệu đặc tả (Metadata Elements)

+ Phần tử "atom:author" là một Person Construct that để xác định tác giả của mục tin hoặc nguồn cung cấp tin.

 

   atomAuthor = element atom:author { atomPersonConstruct }

 

+ Phần tử "atom:category" biểu diễn thông tin về một hạng mục gắn liến với một mục tin hoặc nguồn cung cấp tin

 

   atomCategory =

      element atom:category {

         atomCommonAttributes,

         attribute term { text },

         attribute scheme { atomUri }?,

         attribute label { text }?,

         undefinedContent

      }

+ Phần tử "atom:contributor" là một Person Construct that để xác định một người dùng hoặc thực thể nào đó đóng góp vào mục tin hoặc nguồn cung cấp tin.

 

   atomContributor = element atom:contributor { atomPersonConstruct }

 

+ Phần tử "atom:generator" xác định công cục được sử dụng để sinh ra nguồn cung cấp tin phục vụ việc dò lỗi và các mục đích khác.

   atomGenerator = element atom:generator {

      atomCommonAttributes,

      attribute uri { atomUri }?,

      attribute version { text }?,

      text

   }

 

+ Phần tử "atom:icon" có nội dung là một tham chiếu IRI để xác định một hình ảnh nhận dạng cho mục tin hoặc nguồn cung cấp tin.

   atomIcon = element atom:icon {

      atomCommonAttributes,

      (atomUri)

   }

 

+ Phần tử "atom:id" là định danh cố định, duy nhất cho một mục tin hoặc nguồn cung cấp tin bất kỳ.

   atomId = element atom:id {

      atomCommonAttributes,

      (atomUri)

   }

 

+ Phần tử  "atom:link" xác định một tham chiếu từ một mục tin hoặc nguồn cung cấp tin đến một tài nguyên web.

 

   atomLink =

      element atom:link {

         atomCommonAttributes,

         attribute href { atomUri },

         attribute rel { atomNCName | atomUri }?,

         attribute type { atomMediaType }?,

         attribute hreflang { atomLanguageTag }?,

         attribute title { text }?,

         attribute length { text }?,

         undefinedContent

      }

+ Phần tử "atom:logo" có nội dung là một tham chiếu IRI để xác định một hình ảnh nhận dạng cho mục tin hoặc nguồn cung cấp tin.

   atomLogo = element atom:logo {

      atomCommonAttributes,

      (atomUri)

   }

 

+ Phần tử "atom:published" là một Date Construct để xác định thời gian lần đầu xuất hiện trong chu kỳ tồn tại của mục tin.

 

   atomPublished = element atom:published { atomDateConstruct }

 

+ Phần tử "atom:rights" là một Text construct biểu diễn thông tin về các quyền trong và ngoài mục tin hoặc nguồn cung cấp tin

 

   atomRights = element atom:rights { atomTextConstruct }

 

+ Phần tử "atom:source"

Nếu một atom:entry được sao chép từ một nguồn cung cấp tin đến một nguồn cung cấp tin khác thì dữ liệu đặc tả của atom:feed nguồn (bao gồm tất cả phần tử con của atom:feed ngoại trừ phần tử atom:entry) có thể được giữ lại trong mục tin bản sao bằng việc thêm một phần tử con atom:source nếu nó không có trong mục tin, và bao gồm một số hoặc tất cả phần tử dữ liệu đặc tả của nguồn cung cấp tin nguồn như là các phần tử con của phần tử atom:source

   atomSource =

      element atom:source {

         atomCommonAttributes,

         (atomAuthor*

          & atomCategory*

          & atomContributor*

          & atomGenerator?

          & atomIcon?

          & atomId?

          & atomLink*

          & atomLogo?

          & atomRights?

          & atomSubtitle?

          & atomTitle?

          & atomUpdated?

          & extensionElement*)

      }

 

+ Phần tử "atom:subtitle" là một Text Construct biểu diễn thông tin cho một nguồn cung cấp tin con người có thể đọc được

   atomSubtitle = element atom:subtitle { atomTextConstruct }

 

+ Phần tử "atom:summary" là một Text Construct biểu diễn thông tin ngắn gọn, tóm tắt của một mục tin

   atomSummary = element atom:summary { atomTextConstruct }

 

+ Phần tử "atom:title" là một Text Construct biểu diễn tiêu đề của một mục tin mà con người có thể đọc được

   atomTitle = element atom:title { atomTextConstruct }

 

+ Phần tử "atom:updated" là một Date Construct để biểu diễn thời gian gần nhất một mục tin hoặc nguồn cung cấp tin được chỉnh sửa. Không phải tất cả dự thay đổi thông tin đề được cập nhật.

   atomUpdated = element atom:updated { atomDateConstruct }

 

An toàn cho Atom Documents

Bởi vì Atom là một định dạng dựa trên XML, những cơ chế an toàn cho XML hiện tại có thể sử dụng để bảo đảm an toàn cho nội dung Atom.

- Chữ ký điện tử (Digital Signatures)

Gốc của một Atom Document (phần tử atom:feed trong một Atom Feed Document, phần tử atom:entry trong một Atom Entry Document) hay bất kỳ phần tử atom:entry có thể có một Chữ ký bao ngoài (Enveloped Signature), được mô tả trong XML Signature and Syntax Processing

- Mã hóa (Encryption)

Gốc của một Atom Document (phần tử atom:feed trong một Atom Feed Document, phần tử atom:entry trong một Atom Entry Document) có thể được mã hóa bằng cách sử dụng những cơ chế theo mô tả trong XML Encryption Syntax and    Processing.

- Ký và giải mã (Signing and Encrypting)

Khi ký và mã hóa một Atom Document, bước thứ nhất là ký vào tài liệu, sau đó là mã hóa tài liệu đã ký. Quy trình này sẽ bảo đảm tính toàn vẹn cho tài liệu khi mã hóa tất cả thông tin, bao gồm cả định danh của thực thể đã ký lên tài liệu

Ứng dụng

Đặc tả Atom được ứng dụng rộng rãi để chia sẻ, cung cấp thông tin trên web.

Trong Thông tư số 22/2013/TT-BTTTT ngày 23/12/2013 của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn Atom v1.0 và được xếp vào nhóm Tiêu chuẩn về truy cập thông tin.

6066 Go top

ĐĂNG CÂU HỎI