Giới thiệu MicroXML, Phần 1: Khám phá những nguyên tắc cơ bản của MicroXML

Mặc dù XML là một công nghệ cực kỳ thành công, nó vẫn có những khiếm khuyết. Thành công lớn thì săm xoi kỹ; nhiều người đã cố gắng thiết kế lại XML từ đầu. Mọi người đang đối phó với sự phức tạp của không gian tên của XML và với kỹ thuật xử lý XML gần đây chẳng hạn như XPath, XSLT và XQuery 3.0. Một số chuyên gia về lõi XML rất có ảnh hưởng đã xem xét khả năng làm lại từ đầu bằng việc đơn giản hóa chính XML.

pdf8 trang | Chia sẻ: lylyngoc | Lượt xem: 1583 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Giới thiệu MicroXML, Phần 1: Khám phá những nguyên tắc cơ bản của MicroXML, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Giới thiệu MicroXML, Phần 1: Khám phá những nguyên tắc cơ bản của MicroXML Giới thiệu Các bài viết trong loạt bài viết này  Phần 2: Xử lý MicroXML bằng MicroLark Mặc dù XML là một công nghệ cực kỳ thành công, nó vẫn có những khiếm khuyết. Thành công lớn thì săm xoi kỹ; nhiều người đã cố gắng thiết kế lại XML từ đầu. Mọi người đang đối phó với sự phức tạp của không gian tên của XML và với kỹ thuật xử lý XML gần đây chẳng hạn như XPath, XSLT và XQuery 3.0. Một số chuyên gia về lõi XML rất có ảnh hưởng đã xem xét khả năng làm lại từ đầu bằng việc đơn giản hóa chính XML. Một yếu tố khác trong việc pha trộn là mối đe dọa gây ra bởi các nhà phát triển trình duyệt web làm việc trên HTML5. Cái mà đôi khi còn được gọi là XHTML5 sẽ là một sự tư duy lại căn bản về XML và vi phạm một số nguyên tắc được chăm chút nhất của hệ sinh thái. Tuy nhiên, XHTML5 cũng được coi là một sự bất tiện bởi hầu hết mọi người ủng hộ HTML5. Các chữ viết tắt thường được sử dụng  HTML(Hypertext Markup Language): Ngôn ngữ đánh dấu siêu văn bản  JSON (JavaScript Object Notation): Ký pháp đối tượng của JavaScript  PI (Processing Instructions): Các chỉ dẫn xử lý  XML (Extensible Markup Language) Ngôn ngữ đánh dấu có thể mở rộng được  XSLT( Extensible Stylesheet Language Transformations): Phép biến đổi ngôn ngữ bản định kiểu có thể mở rộng được Sự kết hợp sức mạnh này đã dẫn đến cuộc thảo luận trên danh sách thư XML-DEV và các blog khác nhau. Cuối cùng, James Clark đã đưa ra đề xuất đầy đủ cho MicroXML. John Cowan, người làm việc trong nhóm công tác phần lõi XML của W3C, đã tham gia như là một tác giả đóng góp chính và người soạn thảo đặc tả kỹ thuật. MicroXML không có chỗ đứng chính thức trong bất kỳ tổ chức tiêu chuẩn được công nhận nào, nhưng nó là mối quan tâm lớn cho các nhà phát triển XML vì nhiều lý do. John Cowan đã phát triển MicroLark, là bản triển khai thực hiện cho Java, và tôi đã phát triển một bản triển khai thực hiện cho Python. Có rất nhiều quan tâm đến đặc tả kỹ thuật của MicroXML (xem phần Tài nguyên). Hãy nhớ rằng, nhiều đặc tả kỹ thuật hiện đại quan trọng nhất, chẳng hạn như JSON và Markdown, cũng có gốc rễ không chính thức giống như thế. Một trong những khía cạnh có giá trị nhất của việc hiểu MicroXML là nó có thể giúp bạn học được cách hiệu quả nhất để tiếp cận XML đầy đủ. Trong bài viết này, hãy tìm hiểu về MicroXML. Các ví dụ giúp khám phá sự khác biệt chính giữa MicroXML và XML đầy đủ. Cuộc thảo luận về căn nguyên cũng được đưa vào thêm. Bài viết giả định rằng bạn đã quen thuộc với những khái niệm cơ sở của XML. Các nguyên tắc của MicroXML Hai mục tiêu then chốt của MicroXML là:  Duy trì một mô hình dữ liệu rất đơn giản  Duy trì khả năng tương thích lùi với XML Mọi thứ khác đều bắt nguồn từ hai mục tiêu đó. Các tài liệu MicroXML là các tài liệu XML đúng khuôn dạng (well-formed). MicroXML cũng được thiết kế để thân thiện với HTML5 và JSON. Các đặc tả chính cho mô hình dữ liệu XML, bao gồm cả Infoset và mô hình dữ liệu XPath (XDM), dài hàng chục trang. Ngay cả mô hình dữ liệu XPath 1.0, được thừa nhận là thanh lịch và gọn nhẹ, cũng dài vài trang. Mô hình dữ liệu MicroXML chiếm khoảng nửa trang, nếu bạn không bao gồm các ghi chú về khả năng tương thích JSON. John Cowan thậm chí rút gọn chỉ còn một đoạn, được trích dẫn toàn bộ như dưới đây. "Mô hình dữ liệu của tài liệu bao gồm ít nhất một đối tượng phần tử. Đối tượng phần tử là sự mô tả trừu tượng của một phần tử đơn lẻ trong tài liệu. Mỗi đối tượng phần tử có 3 đặc tính đi kèm: Tên, ánh xạ thuộc tính, và dãy các con. Tên là một chuỗi ký tự; ánh xạ thuộc tính sẽ ánh xạ chuỗi ký tự tên đến chuỗi ký tự giá trị và mỗi phần tử con trong dãy các con sẽ hoặc là một chuỗi ký tự biểu diễn dữ liệu ký tự hoặc là một đối tượng phần tử." Phần còn lại của bài viết này tập trung vào cú pháp MicroXML (cú pháp bắt nguồn trực tiếp từ mô hình dữ liệu). Khái niệm gói ghém tất cả trong MicroXML là tài liệu, nó là kết quả của việc phân tích một dòng đầu vào hoàn toàn tuân thủ đặc tả MicroXML. Tính đúng khuôn dạng Sự khác biệt cơ bản nhất giữa XML và MicroXML là việc xử lý hành vi của trình phân tích cú pháp. Với sự xử lý lỗi nổi tiếng là khắc nghiệt của XML, trình phân tích cú pháp được yêu cầu phải dừng ngay lập tức khi gặp lỗi đầu tiên. Đây là vấn đề gây nhiều tranh cãi, đặc biệt là khi xem xét HTML đã làm cho mọi người có thói quen dùng thẻ đánh dấu cẩu thả như thế nào. Các nhà phê bình của XML cũng có thể trích dẫn luật Postel: Nên nghiêm khắc với những gì bạn gửi, không hẹp hòi đối với những gì bạn nhận. Trong MicroXML, trình phân tích cú pháp có thể tiếp tục sau khi gặp lỗi. Mặc dù tại thời điểm gặp lỗi, nó phải bằng cách nào đó đánh dấu đầu vào không phải là tài liệu đúng khuôn dạng, và do đó cho phép trình phân tích cú pháp tuân thủ MicroXML có thể chuyển sang cách diễn dịch đầu vào khác đi. Hãy suy nghĩ về cách trình phân tích cú pháp HTML có thể chuyển đổi từ tuân thủ chuẩn sang chế độ “món súp các nhãn” (tag soup) và bạn sẽ nắm được ý tưởng. Ví dụ, nếu trình xử lý XML gặp phải đầu vào sau đây, nó phải dừng lại ngay khi nó gặp thẻ và đưa ra lỗi không đúng khuôn dạng do thẻ đóng không khớp. Hello, I claim to be MicroXML Trình phân tích cú pháp MicroXML có thể tiếp tục từ điểm đó, nhưng nó sẽ không báo cáo lại rằng đầu vào là tài liệu MicroXML. Thậm chí nó có thể sửa chữa đầu ra để chèn thêm thẻ ngay trước , nhưng nhắc lại một lần nữa nó không được nói rằng kết quả là tài liệu MicroXML. Sự nới lỏng tinh tế này cho hạn chế phải đúng khuôn dạng tạo ra sự khác biệt lớn nếu bạn đang thiết kế hệ thống thế giới thực phải làm việc với các đầu vào không thể đoán trước. Về đầu trang Giải phẫu MicroXML MicroXML chỉ hỗ trợ bộ mã ký tự UTF-8. Tài liệu MicroXML là dãy các ký tự được mã hóa bằng UTF-8, tạo thành cấu trúc được biểu thị trong mô hình dữ liệu của MicroXML. Giống như với XML, dãy thô ban đầu các ký tự được gọi là văn bản (text), nó bao gồm các thẻ đánh dấu và dữ liệu ký tự. Ví dụ dưới đây cho thấy sự phân biệt kỹ thuật giữa văn bản và dữ liệu ký tự. Hello, I am...MicroXML Tất cả mọi thứ từ thẻ tới thẻ là văn bản, nhưng chỉ có các dãy sau đây là dữ liệu ký tự:  friendly  Hello, I am...  MicroXML Dữ liệu ký tự là những gì xuất hiện trong các giá trị thuộc tính và ở giữa các thẻ tạo ra các phần tử. Các phần tử, thuộc tính và các dữ liệu ký tự Các phần tử, các thuộc tính và dữ liệu ký tự là nền tảng của XML, và trong MicroXML không có nhiều thay đổi với những cấu kiện này. Sự khác biệt lớn nhất là dấu hai chấm bị cấm trong các tên của phần tử. Điều này cấm các phần tử có tiền tố, thường được sử dụng để áp dụng các đặc tả không gian tên của XML. MicroXML không bao gồm không gian tên, sẽ được giải thích sau, nhưng tất cả các phần tử phải sử dụng định dạng không có tiền tố. Các thuộc tính có thể sử dụng định dạng không gian tên làm tiền tố, đôi khi được gọi là thuộc tính toàn cục. Đặc tả của MicroXML xác định việc sử dụng:  xml:space  xml:lang  xml:base  xml:id XML phiên bản 1.0 cho phép các tên thuộc tính chẳng hạn như spam:eggs:toast, nhưng những tên thuộc tính như thế bị cấm trong không gian tên của XML và cũng bị cấm cả trong MicroXML. Các quy tắc tương tự đối với các tên thuộc tính không tiền tố cũng được áp dụng trong MicroXML giống như trong XML, thuộc tính không tiền tố không ở trong bất kỳ không gian tên nào, ngay cả khi nó xuất hiện bên trong phần tử mà phần tử đó ở trong một không gian tên. Khoảng trắng trong các thuộc tính không được chuẩn hóa trong MicroXML như trong XML. Trong XML, hai tài liệu sau đây là không thể phân biệt. Hi. I'm some form of <abbr ref="Extensible Markup Language">XML Hi. I'm some form of <abbr ref=" Extensible Markup Language ">XML Lưu ý sự khác biệt về số khoảng trắng trong thuộc tính ref. Trong MicroXML, số khoảng trắng trong các thuộc tính được báo cáo chính xác đúng như đã bắt gặp, do đó hai tài liệu này là khác nhau. Chỉ dẫn xử lý và chú thích Các chỉ dẫn xử lý (PI) luôn luôn là khu vực gây tranh cãi của XML và chúng vẫn nguyên như vậy trong MicroXML. Một số người yêu cầu rằng các PI được đưa vào và một số người yêu cầu rằng chúng phải được bỏ đi hoàn toàn. Tương lai của PI trong HTML5 cũng chưa chắc chắn. MicroXML đã đạt được sự cân bằng tốt, nó cho phép một tập hạn chế các PI trông tương tự như các thẻ bắt đầu. PI được sử dụng phổ biến nhất là xml-stylesheet, vẫn còn đúng với MicroXML. Các chú thích của MicroXML rất giống với các chú thích XML. Một số hạn chế bổ sung điều tiết HTML5, nhưng chúng có lẽ sẽ không ảnh hưởng đến hầu hết các nhà phát triển. Vì lý do tương thích, MicroXML không nới lỏng các hạn chế trong XML, đặc biệt là đối với hai dấu gạch ngang (--) trong chú thích, và do đó cả với các chú thích lồng nhau. Các chú thích hoàn toàn chỉ vì lợi ích của người đọc các tài liệu và chúng được trình phân tích cú pháp bỏ qua. Trình phân tích cú pháp MicroXML báo cáo lại các chỉ dẫn, nhưng chúng không được coi là một phần của mô hình dữ liệu. Các ứng dụng nhận biết và sử dụng các chỉ dẫn của MicroXML phải hoạt động ở tầng cú pháp hơn là ở tầng dữ liệu. Không gian tên MicroXML hỗ trợ cách cách tiếp cận đơn giản hóa đến không gian tên của XML. Trình phân tích cú pháp chuyển các thuộc tính khai báo không gian tên xmlns và xmlns:a-prefix, đến ứng dụng như là các thuộc tính thông thường, không có bất kỳ xử lý đặc biệt nào. Tất nhiên ứng dụng MicroXML được khuyến khích sử dụng thông tin này để xây dựng mô hình, trong đó các phần tử và các thuộc tính có tên phổ quát, các tên này độc lập với tiền tố của chúng. Nói chung, MicroXML hỗ trợ các đặc tả như XLink, bao gồm cả những đặc tả phụ thuộc chẳng hạn như SVG. Các khái niệm khác MicroXML bao gồm phần tóm tắt về:  Đặc tả ngôn ngữ con người (xml:lang) và bảo toàn số khoảng trắng (xml:space) tương tự như đặc tả của XML 1.0.  xml:base và xml:id, tương tự như đặc tả của XML lõi tương ứng. Chỉ duy nhất một khai báo kiểu tài liệu được hỗ trợ, đó là một khai báo đơn giản, khai báo tên của phần tử gốc. Các định nghĩa kiểu tài liệu (DTD) hoàn toàn không được hỗ trợ trong MicroXML, cả trong tập hợp con nội bộ lẫn bên ngoài. Về đầu trang Ví dụ về MicroXML Phần này có một ví dụ thực tế khá đầy đủ của XML điển hình để cho thấy nó trông ra sao dưới dạng MicroXML. Atom là một định dạng mẫu tốt bởi vì nó thường bao gồm một hỗn hợp các không gian tên, Liệt kê 1 được dựa trên liệt kê trong sách hướng dẫn "Xử lý Atom 1.0 với XSLT" (xem phần Tài nguyên). Tôi đã gỡ bỏ một trong các phần tử entry và sử dụng tiền tố không gian tên, a, cho tất cả các phần tử của Atom lõi, chẳng hạn như feed, để giúp minh họa các thay đổi đến không gian tên trong MicroXML. Liệt kê 1. Liệt kê 1. XML điển hình <a:feed xmlns:a="" xmlns="" xml:lang="en" xml:base=""> Copia 2005-07-15T12:00:00Z Uche Ogbuji XHTML tutorial pubbed 2005-07-15T12:00:00Z "XHTML, step-by-step" Start working with Extensible Hypertext Markup Language. In this tutorial, author Uche Ogbuji shows you how to use XHTML in practical Web sites. In this tutorial Tutorial introduction Anatomy of an XHTML Web page Understand the ground rules Replace common HTML idioms Some practical considerations Wrap up Liệt kê 2 là phiên bản MicroXML của liệt kê 1. Hãy lưu ý là không có khai báo XML, vì nó không được hỗ trợ ở MicroXML và không cần thiết vì chỉ mã hóa UTF-8 được hỗ trợ. Không có tiền tố trước bất kỳ phần tử nào. Không gian tên mặc định được thiết lập là Atom trên phần tử feed và cho XHTML trên phần tử div. Liệt kê 2. Liệt kê 2. Phiên bản MicroXML <feed xmlns="" xml:lang="en" xml:base=""> Copia 2005-07-15T12:00:00Z Uche Ogbuji XHTML tutorial pubbed 2005-07-15T12:00:00Z "XHTML, step-by-step" Start working with Extensible Hypertext Markup Language. In this tutorial, author Uche Ogbuji shows you how to use XHTML in practical Web sites. In this tutorial Tutorial introduction Anatomy of an XHTML Web page Understand the ground rules Replace common HTML idioms Some practical considerations Wrap up Liệt kê 3 cho thấy tài liệu MicroXML, cũng là một tài liệu HTML5 hợp lệ. Khai báo DOCTYPE đơn giản hóa được sử dụng. Ví dụ này cũng sử dụng chỉ dẫn xử lý và chú thích. Liệt kê 3. Liệt kê 3. MicroXML và HTML5 hợp lệ Welcome page Welcome to IBM developerWorks.
Tài liệu liên quan