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.
8 trang |
Chia sẻ: lylyngoc | Lượt xem: 1583 | Lượt tải: 1
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.