Search…

Tìm Hiểu và Tạo Tài Liệu XML Đầu Tiên

25/09/20208 min read
Giới thiệu cấu trúc cơ bản của các tài liệu XML và các quy tắc cơ bản để tạo tài liệu XML well-formed

Giới thiệu

Với sự bùng nổ của Internet nhu cầu giao tiếp dữ liệu ngày càng gia tăng tạo ra sự đa dạng trong cách sử dụng ngôn ngữ XML đã xuất hiện các khái niệm như XML schemas, XSLT,... chính điều đó đã tăng thêm sức mạnh cho ngôn ngữ XML.

Để khai thác được tối đa các điểm mạnh của ngôn ngữ XML trong ứng dụng phải có 1 tài liệu XML well-formed và mô tả chính xác được dữ liệu.

Trình soạn thảo

Với sự phát triển mạnh mẽ của ngôn ngữ XML các công cụ hỗ trợ chỉnh sửa, xác nhận hợp lệ, định dạng, soạn thảo tài liệu XML rất đa dạng như: Xerlin XML Editor, XMLFox, XMLSpy, XML Marker,...

Khi mới bắt đầu làm quen với ngôn ngữ XML, nên chọn trình soạn thảo đơn giản như notepad++ để không phụ thuộc quá nhiều vào trình soạn thảo thông minh, giúp nhanh chóng tiếp cận và hiểu rõ hơn về ngôn ngữ XML.

Cách tạo ra một tài liệu XML

Để tạo được 1 tài liệu XML hiệu quả, phân tích 2 thành phần quan trọng trong tài liệu.

  • Nội dung: ngắn gọn, súc tích nhưng đảm bảo tính đầy đủ và khách quan mô tả chính xác dữ liệu.
  • Elements: khi xây dựng các elements nên tạo ra những quy tắc quy định các mối liên kết trong tài liệu tùy theo từng trường trường hợp cụ thể. Dựa vào đó có thể phân chia rõ ràng hoặc nhóm các elements có các đặc điểm chung. Quan trọng nhất là khi tạo ra các elements phải đảm bảo rằng dựa vào chúng có thể nhận dạng được các nội dung trong tài liệu.

Ví dụ

Bài viết lấy ví dụ tạo 1 tài liệu XML để mô tả cách làm matcha trà xanh (matcha green tea).

Nội dung: liệt kê được ngắn gọn và đầy đủ thông tin.
TÊN: matcha trà xanh
DANH SÁCH NGUYÊN LIỆU

  • Bột trà xanh: 5gram
  • Sữa đặc: 30ml
  • Nước đun sôi: 40ml
  • Sữa không đường: 30ml
  • Bột vani: 15gram
  • Đá bi: 1 ly

DỤNG CỤ

  • Máy xay
  • Bình xịt kem tươi

CÁCH LÀM

  • Bước 1: Đun sôi nước, sau đó đổ bột trà xanh vào, đánh đều tay cho bột matcha tan hết rồi đổ tất cả các nguyên liệu còn lại vào.
  • Bước 2: Chuẩn bị một máy xay chuyên cho pha chế. Đổ dung dịch trà xanh, sữa đặc, sữa tươi, bột vani, đá bi vào trong máy và xay đến khi nào hỗn hợp trong máy bông lên thì đổ ra ly.
  • Bước 3: Dùng bình kem tươi và xịt kem lên trên, có thể cho một ít bánh cookie lên trên phần kem tươi để cốc matcha thêm phần hấp dẫn.

Sau khi đã xây dựng được nội dung, bắt đầu tiếp tục xây dựng những quy tắc quy định những mối liên hệ trong nội dung. Dựa vào nội dung tìm được mối liên hệ giữa các phần tử trong nội dung như sau.

CÁCH LÀM

Tên món ăn
Danh sách nguyên liệu

  • Nguyên liệu 1
  • Nguyên liệu 2

Dụng cụ

  • Dụng cụ 1
  • Dụng cụ 2
  • ...

Cách làm

  • Bước 1
  • Bước 2 

Bắt đầu tài liệu XML

Dòng đầu tiên trong tài liệu XML là dòng khai báo các chỉ thị xử lý. Mục đích của việc khai báo này đầu tiên là cho Parser (các công cụ như: hàm, thư viện, API, phần mềm…) nhận biết đây là 1 tài liệu XML khi phân tích cũng như thao tác với tài liệu, phải tuân theo các chuẩn đã được khai báo.

Khai báo có thể viết đơn giản như sau <?xml?> hoặc kèm theo các thuộc tính như:

  • version="1.0" cho biết phiên bản XML đang sử dụng.
  • encoding="UTF-8" cho biết kiểu mã hóa ngôn ngữ.
  • standalone="yes" cho biết tài liệu này có độc lập không hay phụ thuộc vào một tài liệu nào khác.

Trong ví dụ của bài viết, sử dụng XML phiên bản 1.0, nội dung có chứa tiếng việt nên chọn kiểu mã hóa UTF-8, tài liệu độc lập hoàn toàn. Khai báo chỉ thị của tài liệu XML trong ví dụ sẽ như sau:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

Tạo root element

Trong tài liệu XML chỉ được tồn tại duy nhất một root element, thẻ mở và thẻ đóng của root element sẽ bao toàn bộ nội dung của tài liệu XML. Tên của root element nên đặt sao cho có thể nêu lên được nội dung tổng quát của tài liệu.

Ví dụ  này tôi đặt tên cho root element là <recipe></recipe>

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<recipe>
</recipe>

Đặt tên các elements

Trong ngôn ngữ XML, tên các elements do người dùng tự định nghĩa. Tuy nhiên khi đặt tên cho các elements nên chú ý 1 số điều:

  • Tuân thủ đúng các quy tắc đặt tên trong tài liệu XML.
  • Tên của element nên có khả năng đặc tả được nội dung bên trong. Việc đặt tên như thế nào không bắt buộc, có thể đặt tên bất kỳ cho element. Ví dụ để mô tả tên món ăn trong ví dụ có thể đặt tên element như sau: "<abc>Matcha trà xanh</abc>". Cách đặt tên này hoàn toàn không sai, nhưng sẽ mất công để ghi chú lại ý nghĩa của element này. Nếu không khi đọc lại tài liệu XML này sẽ không thể hiểu element này mô tả nội dung gì?

Khi đặt tên cho 1 element, ngoài việc đảm bảo đúng quy tắc, nên chú ý thêm ý nghĩa của nó. Trong ví dụ để mô tả tên công thức nên đặt tên element là <recipename>.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<recipe>
	<recipename>Matcha trà xanh</recipename>
</recipe>

Lồng ghép các elements

Các elements có thể lồng ghép với nhau theo nhiều cấp trong tài liệu XML.

Có thể lồng thêm nhiều element cấp thấp hơn bên trong 1 element. Dựa vào phân tích quy tắc quy định các mối liên hệ ở bên trên sẽ lồng ghép các element một cách hợp lý để có thể mô tả được toàn bộ dữ liệu.

Nếu không sử dụng các trình soạn thảo thông minh hỗ trợ, trong quá trình lồng ghép các elements việc mở và đóng các thẻ rất dễ phát sinh lỗi.

Tuy nhiên khi mới bắt đầu làm quen với ngôn ngữ XML, nên cố gắng tự kiểm soát phần lồng ghép các elements này. Đóng mở các thẻ theo đúng nguyên tắc: “thẻ mở sau phải đóng trước”.

Dựa vào kết quả phân tích ví dụ ở phần trên có được 1 tài liệu XML như sau:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<recipe>
	<recipename>Matcha trà xanh</recipename>
	<ingredlist>
		<item>
			<name>Bột trà xanh</name>
			<quantity>5</quantity>
		</item>
		<item>
			<name>Sữa đặc</name>
			<quantity>30</quantity>
		</item>
		<item>
			<name>Nước đun sôi</name>
			<quantity>40</quantity>
		</item>
		<item>
			<name>Sữa không đường</name>
			<quantity>30</quantity>
		</item>
		<item>
			<name>Bột vani</name>
			<quantity>15</quantity>
		</item>
		<item>
			<name>Đá bi</name>
			<quantity>1</quantity>
		</item>
	</ingredlist>
	<utensils>
		<name>Máy xay</name>
		<name>Bình xịt kem tươi</name>
	</utensils>
	<directions>
		<step>Đun sôi nước, sau đó đổ bột trà xanh vào, đánh đều tay cho bột matcha tan hết rồi đổ tất cả các nguyên liệu còn lại vào</step>
		<step>Chuẩn bị một máy xay chuyên cho pha chế. Đổ dung dịch trà xanh, sữa đặc, sữa tươi, bột vani, đá bi vào trong máy và xay đến khi nào hỗn hợp trong máy bông lên thì đổ ra ly</step>
		<step>Dùng bình kem tươi và xịt kem lên trên, có thể cho một ít bánh cookie lên trên phần kem tươi để cốc matcha thêm phần hấp dẫn</step>
	</directions>
</recipe>

Thêm các attributes

Các attributes (thuộc tính) được thêm vào các elements để tăng thêm tính đặc tả cho các elements.

Trong tài liệu XML trên, các elements quantity chỉ có thể mô tả về dữ liệu định lượng các nguyên liệu mà không cho người dùng biết được đơn vị đo các định lượng này.

Để khắc phục điểm này, có thể thêm attribute “unit” vào element “quantity” để đặc tả đơn vị đo.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<recipe>
	<recipename>Matcha trà xanh</recipename>
	<ingredlist>
		<item>
			<name>Bột trà xanh</name>
			<quantity units="gram">5</quantity>
		</item>
		<item>
			<name>Sữa đặc</name>
			<quantity units=" milliliters">30</quantity>
		</item>
		<item>
			<name>Nước đun sôi</name>
			<quantity units=" milliliters ">40</quantity>
		</item>
		<item>
			<name>Sữa không đường</name>
			<quantity units=" milliliters ">30</quantity>
		</item>
		<item>
			<name>Bột vani</name>
			<quantity units="gram">15</quantity>
		</item>
		<item>
			<name>Đá bi</name>
			<quantity units="cups">1</quantity>
		</item>
	</ingredlist>
	<utensils>
		<name>Máy xay</name>
		<name>Bình xịt kem tươi</name>
	</utensils>
	<directions>
		<step>Đun sôi nước, sau đó đổ bột trà xanh vào, đánh đều tay cho bột matcha tan hết rồi đổ tất cả các nguyên liệu còn lại vào</step>
		<step>Chuẩn bị một máy xay chuyên cho pha chế. Đổ dung dịch trà xanh, sữa đặc, sữa tươi, bột vani, đá bi vào trong máy và xay đến khi nào hỗn hợp trong máy bông lên thì đổ ra ly</step>
		<step>Dùng bình kem tươi và xịt kem lên trên, có thể cho một ít bánh cookie lên trên phần kem tươi để cốc matcha thêm phần hấp dẫn</step>
	</directions>
</recipe>
IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024