Tại sao cần định dạng văn bản?

Định dạng văn bản thuận tiện cho việc lưu trữ thông tin vì chúng có thể được tạo và xử lý bởi cả chương trình và con người.

Các tệp văn bản (tệp ở định dạng văn bản) có thể được mở, đọc và chỉnh sửa trong nhiều trình soạn thảo văn bản.

Nhiều chương trình sử dụng tệp cấu hình dựa trên văn bản, ngay cả khi định dạng chứa số và giá trị nhị phân (có/không).

Điều này làm cho chương trình hơi phức tạp hơn do phải chuyển đổi từ văn bản sang định dạng bên trong và ngược lại, nhưng nó có thể chỉnh sửa cấu hình theo cách thủ công mà không cần sử dụng công cụ cấu hình trong chính chương trình.

Hiện nay XML được sử dụng ở đâu?

XML được sử dụng trong các lĩnh vực CNTT khác nhau. Nó có thể là các tệp cấu hình (có cài đặt chương trình) hoặc tệp được sử dụng để truyền dữ liệu giữa các chương trình. Trong Java, một trong những trường hợp sử dụng phổ biến nhất là định cấu hình Maven, một công cụ tự động hóa bản dựng.

Cấu trúc của một tài liệu XML

Các cấu trúc vật lý và logic của một tài liệu XML được tách biệt. Về mặt cấu trúc vật lý, tài liệu bao gồm các thực thể có thể tham chiếu đến các thực thể khác.

Phần tử gốc duy nhất là thực thể tài liệu. Một thực thể là phần nhỏ nhất trong một tài liệu. Tất cả các thực thể đều có tên và chứa các ký tự.

Đổi lại, các ký tự thuộc một trong hai loại: dữ liệu ký tự hoặc đánh dấu.

Đánh dấu bao gồm:

  • thẻ, biểu thị ranh giới phần tử;
  • khai báo và hướng dẫn xử lý, bao gồm các thuộc tính của chúng;
  • tham chiếu thực thể;
  • bình luận;
  • chuỗi ký tự gói các phần CDATA.

Về mặt logic, tài liệu bao gồm các phần tử, nhận xét, khai báo, tham chiếu thực thể và hướng dẫn xử lý. Đánh dấu được sử dụng để tạo tất cả cấu trúc này trong tài liệu.

Tất cả các phần cấu thành của một tài liệu được chia thành phần prolog và phần gốc. Phần tử gốc là phần bắt buộc, thiết yếu của một tài liệu XML, trong khi prolog có thể hoàn toàn không tồn tại. Phần tử gốc có thể bao gồm các phần tử lồng nhau, dữ liệu ký tự và nhận xét. Các phần tử của tài liệu phải được lồng vào nhau một cách chính xác: bất kỳ phần tử nào bắt đầu bên trong phần tử khác cũng phải kết thúc bên trong phần tử đó.

Ký hiệu đánh dấu

Đánh dấu luôn bắt đầu bằng < và kết thúc bằng > .

Các ký hiệu <> (dấu ngoặc nhọn) và & (dấu và) đóng một vai trò đặc biệt. Các dấu ngoặc nhọn biểu thị ranh giới của các phần tử, hướng dẫn xử lý và một số trình tự khác. Và dấu và giúp chúng ta thay thế văn bản bằng các thực thể.

khai báo XML

Một khai báo XML chỉ định phiên bản của ngôn ngữ được sử dụng để viết tài liệu. Đặc tả XML nói rằng hãy bắt đầu một tài liệu bằng một khai báo XML vì việc giải thích đúng nội dung tài liệu phụ thuộc vào phiên bản của ngôn ngữ.

Trong phiên bản đầu tiên của ngôn ngữ (1.0), khai báo này là tùy chọn, nhưng nó là bắt buộc trong các phiên bản sau. Tuyên bố bị thiếu được cho là có nghĩa là phiên bản 1.0. Tuyên bố cũng có thể chứa thông tin về mã hóa tài liệu.

Ví dụ:

<?Phiên bản XML="1.1" mã hóa="UTF-8" ?>

thẻ

Thẻ là một cấu trúc đánh dấu có chứa tên của một phần tử. Có thẻ bắt đầu và thẻ kết thúc. Ngoài ra còn có các thẻ phần tử trống kết hợp các phần tử bắt đầu và kết thúc.

Ví dụ:

  • Thẻ bắt đầu: <tag1>

  • Thẻ kết thúc: </tag1>

  • Thẻ phần tử rỗng: <empty_tag1 />

Thuộc tính

Một phần khác của các phần tử XML là các thuộc tính. Một phần tử có thể có nhiều thuộc tính duy nhất. Các thuộc tính cho phép chúng tôi chỉ định thêm thông tin về một phần tử. Hay chính xác hơn, các thuộc tính xác định các thuộc tính của các phần tử.

Một thuộc tính luôn là một cặp tên-giá trị:

tên = "giá trị"

Ví dụ về thuộc tính trong thẻ:

<tag1 name="value">phần tử</tag1>

Giá trị của thuộc tính phải được đặt trong dấu ngoặc kép ( " ) hoặc dấu ngoặc đơn ( ' ). Thuộc tính chỉ được sử dụng trong thẻ bắt đầu và thẻ thành phần trống.

Thoát năm ký tự đặc biệt (<, >, ', ”, &)

Rõ ràng, các ký hiệu < , >& không thể được sử dụng như vậy trong dữ liệu ký tự và giá trị thuộc tính. Bạn cần các chuỗi thoát đặc biệt để đại diện cho chúng. Trình tự đặc biệt cũng được sử dụng khi viết dấu nháy đơn và dấu ngoặc kép bên trong giá trị thuộc tính:

Biểu tượng thay thế
< <
> >
& &
' '
" "

Ngoài ra, để viết ký tự \ , bạn cần sử dụng \\ .

phần CDATA

Phần CDATA không phải là một đơn vị logic của văn bản. Loại phần này có thể xảy ra khi cú pháp XML cho phép chúng tôi đặt dữ liệu ký tự trong tài liệu.

Phần này bắt đầu bằng <![CDATA[ và kết thúc bằng ]]> . Dữ liệu ký tự được đặt giữa các bit đánh dấu này và các ký hiệu < , >& có thể được sử dụng ở dạng trực tiếp của chúng.

Bình luận

Nhận xét không được coi là dữ liệu ký tự. Một nhận xét bắt đầu bằng <!-- và kết thúc bằng --> . Chuỗi ký tự -- không thể được sử dụng bên trong nhận xét. Ngoài ra, bên trong một nhận xét, ký tự dấu và không biểu thị đánh dấu.

Ví dụ:

<!-- đây là nhận xét -->

tên

Trong XML, tất cả các tên chỉ có thể chứa các chữ cái trong bảng ký tự Unicode, chữ số Ả Rập, dấu chấm, dấu hai chấm, dấu gạch nối và dấu gạch dưới. Tên có thể bắt đầu bằng một chữ cái, dấu hai chấm hoặc dấu gạch dưới. Lưu ý rằng tên không thể bắt đầu bằng chuỗi XML .

Ví dụ

Hãy xem một lớp Java và một đối tượng của lớp đó. Sau đó, chúng tôi sẽ cố gắng tuần tự hóa đối tượng ở định dạng XML. Mã lớp:


public class Book {
   private String title;
   private String author;
   private Integer pageCount;
   private List<String> chapters;

   public Book(String title, String author, Integer pageCount, List<String> chapters) {
       this.title = title;
       this.author = author;
       this.pageCount = pageCount;
       this.chapters = chapters;
   }
// Getters/setters
}

và tạo các đối tượng:


Book book = new Book("My Favorite Book", "Amigo", 999, Arrays.asList("Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", "Chapter 5", "Chapter 6"));

Dưới đây là ví dụ về biểu diễn XML hợp lệ của đối tượng Java chứa 4 trường, một trong số đó là tập hợp (xem mã Java ở trên):

<Book>
  <title>Cuốn sách yêu thích của tôi</title>
  <author>Amigo</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>Chương 1</chapters>
    <chapters>Chương 2</chapters>
    <chapters>Chương 3</chapters>
    <chapters>Chương 4</chapters>
    <chapters>Chương 5</chapters>
    <chapters>Chương 6</chapters>
 </chapters>
</Book>

lược đồ XML

Một lược đồ XML là mô tả cấu trúc của một tài liệu XML. Thông số kỹ thuật tương ứng (XML Schema Definition, hoặc XSD) là khuyến nghị của W3C.

XSD được thiết kế để thể hiện các quy tắc mà một tài liệu XML phải tuân theo. Nhưng điều thú vị nhất đối với chúng tôi là XSD được thiết kế để sử dụng khi phát triển phần mềm xử lý các tài liệu XML. Nó cho phép chúng tôi kiểm tra tính chính xác của tài liệu XML theo chương trình.

Các tệp chứa lược đồ XML có phần mở rộng .xsd. Việc thiết kế một lược đồ XML nằm ngoài phạm vi của bài học này, vì vậy bây giờ chỉ cần lưu ý rằng khả năng này tồn tại.