Mô tả dữ liệu bằng XML. Mô tả cấu trúc của tài liệu XML. Ngôn ngữ Định nghĩa Lược đồ XML (XSD)

Bạn có biết không, Đâu là sự sai lầm của khái niệm “chân không vật lý”?

Chân không vật lý - khái niệm vật lý lượng tử tương đối tính, theo đó chúng có nghĩa là trạng thái năng lượng (mặt đất) thấp nhất của trường lượng tử hóa, có động lượng bằng 0, động lượng góc và các số lượng tử khác. Các nhà lý thuyết tương đối tính gọi chân không vật lý là một không gian hoàn toàn không có vật chất, chứa đầy một trường không thể đo lường được và do đó chỉ là trường tưởng tượng. Trạng thái như vậy, theo những người theo thuyết tương đối, không phải là một khoảng trống tuyệt đối, mà là một không gian chứa đầy một số hạt ảo (ảo). Lý thuyết trường lượng tử tương đối tính phát biểu rằng, theo nguyên lý bất định Heisenberg, ảo, nghĩa là biểu kiến ​​(rõ ràng với ai?), các hạt liên tục sinh ra và biến mất trong chân không vật lý: cái gọi là dao động trường điểm 0 xảy ra. Các hạt ảo của chân không vật lý, và do đó, theo định nghĩa, bản thân nó không có hệ quy chiếu, vì nếu không thì nguyên lý tương đối của Einstein, cơ sở của thuyết tương đối, sẽ bị vi phạm (nghĩa là một hệ thống đo lường tuyệt đối có tham chiếu). các hạt của chân không vật lý sẽ trở nên khả thi, do đó sẽ bác bỏ rõ ràng nguyên lý tương đối mà SRT dựa vào). Như vậy, chân không vật lý và các hạt của nó không phải là các yếu tố của thế giới vật chất mà chỉ là các yếu tố của thuyết tương đối, không tồn tại trong thế giới thực mà chỉ tồn tại trong các công thức tương đối, vi phạm nguyên lý nhân quả (chúng xuất hiện và biến mất không nguyên nhân), nguyên lý khách quan (các hạt ảo có thể được xem xét, tùy theo mong muốn của nhà lý thuyết, tồn tại hoặc không tồn tại), nguyên tắc đo lường thực tế (không quan sát được, không có ISO riêng).

Khi một nhà vật lý này hay một nhà vật lý khác sử dụng khái niệm “chân không vật lý”, thì anh ta hoặc là không hiểu sự vô lý của thuật ngữ này, hoặc là không thành thật, là một người công khai hoặc giấu kín tuân theo hệ tư tưởng tương đối.

Cách dễ nhất để hiểu sự vô lý của khái niệm này là quay lại nguồn gốc xuất hiện của nó. Nó được Paul Dirac khai sinh vào những năm 1930, khi người ta thấy rõ rằng việc phủ nhận ether ở dạng nguyên chất của nó, như đã được thực hiện bởi một nhà toán học vĩ đại nhưng là một nhà vật lý tầm thường, là không thể được nữa. Có quá nhiều sự thật mâu thuẫn với điều này.

Để bảo vệ thuyết tương đối, Paul Dirac đã đưa ra khái niệm phi vật lý và phi logic về năng lượng âm, sau đó là sự tồn tại của một “biển” gồm hai năng lượng bù trừ cho nhau trong chân không - dương và âm, cũng như một “biển” các hạt bù trừ cho nhau. khác - các electron và positron ảo (nghĩa là rõ ràng) trong chân không.

XML (Ngôn ngữ đánh dấu eXtensible) là một phương ngữ đơn giản của SGML được thiết kế để mô tả các cấu trúc dữ liệu phân cấp trên World Wide Web. Nó được phát triển bởi nhóm làm việc của W3C từ năm 1996; Khuyến nghị hiện được chấp nhận là phiên bản thứ hai của ngôn ngữ XML 1.0 (tháng 10 năm 2000), là cơ sở để trình bày thêm.

XML chắc chắn là một trong những công nghệ WWW hứa hẹn nhất, điều này giải thích sự quan tâm mà nó nhận được từ cả các tập đoàn phát triển và công chúng nói chung. Trước khi chuyển sang mô tả về nó, có vẻ thích hợp để thảo luận về lý do xuất hiện và sự phát triển nhanh chóng sau đó của nó. Để làm được điều này, chúng ta hãy thử xem xét các vấn đề của WWW phải được giải quyết bằng thế hệ công nghệ Web mới.

HTML không thể hiện ý nghĩa của tài liệu. HTML được tạo ra để mô tả cấu trúc tài liệu (tiêu đề, tiêu đề, danh sách, đoạn văn, v.v.) và ở một mức độ nào đó, các quy tắc của chúng trưng bày(in đậm, in nghiêng, v.v.). Nó không có ý định mô tả giác quan các tài liệu được viết trên đó, và trong nhiều trường hợp, chính dữ liệu tạo nên bản chất của tài liệu, có thể là báo cáo giao dịch chứng khoán hoặc một ấn phẩm khoa học. Do đó, cần có một ngôn ngữ để mô tả dữ liệu và dữ liệu được tổ chức theo cấu trúc phân cấp. HTML cồng kềnh và không linh hoạt. Trong những năm gần đây, HTML đã trở thành một mớ hỗn độn các thẻ thường trùng lặp với nhau và không mang lại sự rõ ràng cho văn bản của tài liệu. Nếu chúng ta thêm vào đây các tiện ích mở rộng HTML không chuẩn, điều mà tất cả các nhà phát triển trình duyệt đều mắc phải, thì việc tạo ra các tài liệu HTML phức tạp ít nhiều sẽ trở thành một nhiệm vụ nghiêm trọng. Mặt khác, một bộ thẻ cố định một lần và mãi mãi thường không đủ linh hoạt để thể hiện nội dung chúng ta cần. Khái niệm Trình duyệt Web quá hạn chế. Với sự ra đời của các ứng dụng Java, ngôn ngữ kịch bản và điều khiển ActiveX, trình duyệt Web không còn chỉ là "trình kết xuất" tài liệu HTML nữa; ngày nay chúng trông giống các chương trình chạy các ứng dụng cụ thể hơn. Tuy nhiên, chính khái niệm về trình duyệt đã đặt ra những hạn chế không cần thiết đối với người dùng; trong nhiều trường hợp chúng ta cần Ứng dụng dựa trên web, tức là các chương trình có thể đọc thông tin chuyên biệt từ các trang Web và cung cấp thông tin đó cho chúng ta ở dạng quen thuộc, chẳng hạn như dưới dạng bảng tính. Tìm kiếm tài liệu trả về quá nhiều liên kết. Tất cả chúng ta đều sử dụng các công cụ tìm kiếm mọi lúc và liên tục đổ lỗi cho chúng về sự bất tiện của chúng. Giả sử rằng tôi cần tất cả nội dung các cuốn sách của Sergei Dovlatov có trên Internet. Cố gắng tìm kiếm theo tên tác giả sẽ cho kết quả là tôi nhận được danh sách tất cả các liên kết có tên đó, bao gồm cả ký ức về Dovlatov, bài đánh giá về sách của ông ấy, v.v. Sẽ thuận tiện hơn nhiều nếu sử dụng một thẻ đặc biệt để chỉ ra chính xác những gì tôi đang tìm kiếm. Không thể tìm thấy các tài nguyên liên quan. Bây giờ chúng ta hãy giả sử rằng tôi đã tìm thấy một số truyện của Dovlatov, rõ ràng là một tuyển tập duy nhất. Thật tuyệt nếu chúng bao gồm một liên kết đến mục lục, nhưng thường thì không. Do đó, cần có một cách để chỉ ra rằng một nhóm trang nhất định cấu thành một tài nguyên duy nhất và cần được xử lý như vậy. Điều này đòi hỏi một hệ thống được tiêu chuẩn hóa và phát triển siêu mô tả Trang web.

XML là một nỗ lực nhằm giải quyết những vấn đề này bằng cách tạo ra một ngôn ngữ đánh dấu đơn giản mô tả dữ liệu có cấu trúc tùy ý. Chính xác hơn, đó là một ngôn ngữ kim loại trong đó các ngôn ngữ chuyên biệt được viết để mô tả dữ liệu có cấu trúc nhất định. Những ngôn ngữ như vậy được gọi là Từ điển XML. Không giống như HTML, XML không chứa bất kỳ hướng dẫn nào về cách hiển thị dữ liệu được mô tả trong tài liệu XML. Cách hiển thị dữ liệu cho các thiết bị khác nhau được chỉ định bởi biểu định kiểu XSL, biểu định kiểu này đóng vai trò gần giống với XML giống như CSS đối với HTML. Một điểm khác biệt cơ bản so với HTML là XML có thể chứa bất kỳ thẻ nào mà người tạo từ điển XML cho là cần thiết để sử dụng. Dưới đây là danh sách một số ngôn ngữ dựa trên XML chuyên biệt hiện đang trong các giai đoạn phát triển khác nhau của các nhóm làm việc của W3C:

  • Ngôn ngữ MathML của các công thức toán học;
  • Ngôn ngữ đồng bộ và tích hợp đa phương tiện SMIL;
  • Ngôn ngữ đồ họa vector hai chiều SVG;
  • Ngôn ngữ mô tả meta tài nguyên RDF;
  • Định dạng lại XHTML của HTML theo thuật ngữ XML.

Quá trình xử lý một tài liệu XML như sau. Văn bản của nó được phân tích bởi một chương trình đặc biệt gọi là bộ xử lý XML. Bộ xử lý XML không biết gì về ngữ nghĩa của dữ liệu trong tài liệu; nó chỉ phân tích văn bản của tài liệu và kiểm tra tính chính xác của nó theo các quy tắc XML. Nếu tài liệu được định dạng đúng(được định dạng tốt), sau đó kết quả phân tích cú pháp văn bản sẽ được bộ xử lý XML chuyển sang chương trình ứng dụng, chương trình này thực hiện quá trình xử lý có ý nghĩa của chúng; nếu tài liệu được định dạng không chính xác, tức là có lỗi cú pháp, thì bộ xử lý XML phải báo cáo chúng cho người dùng.

8.1.2. Ứng dụng của XML

Câu hỏi đặt ra: mục đích sử dụng “ngôn ngữ trống rỗng”, không có nội dung riêng của nó là gì? Thực tế là, mặc dù có vẻ đơn giản nhưng XML có các cơ chế khá phức tạp để giám sát tính chính xác của dữ liệu, cho phép kiểm tra các mối quan hệ phân cấp trong một tài liệu và quan trọng nhất là thiết lập một tiêu chuẩn duy nhất cho các tài liệu lưu trữ dữ liệu, bất kể bản chất của dữ liệu này là gì. . Chúng ta hãy xem xét kỹ hơn một số lĩnh vực ứng dụng của ngôn ngữ XML.

Xử lý dữ liệu truyền thống Các khả năng được liệt kê ở trên cho phép chúng tôi coi XML là một tiêu chuẩn độc lập với nền tảng để lưu trữ và trình bày thông tin, khi kết hợp với các công nghệ hiện đại khác (đặc biệt là công nghệ Java), có thể trở thành cơ sở để tạo bất kỳ ứng dụng độc lập nào với máy, bao gồm cả trao đổi dữ liệu giữa máy chủ và máy khách. Ngoài ra, các ngôn ngữ truy vấn dựa trên XML đang được phát triển tích cực ngày nay có thể cạnh tranh nghiêm trọng với ngôn ngữ SQL. Lập trình hướng tài liệu Các tài liệu XML có thể đóng vai trò là nơi chứa để xây dựng các ứng dụng từ các giao diện và thành phần hiện có. Trong trường hợp này, tài liệu bao gồm các tham chiếu đến các thành phần giao diện người dùng và mô-đun xử lý dữ liệu được liên kết khi trang được hiển thị trên màn hình. Lưu trữ thành phần Lập trình hiện đại dựa trên việc sử dụng các thành phần, lý tưởng nhất là có thể dễ dàng lắp ráp thành một tổng thể duy nhất bằng cách sử dụng mã hóa bổ sung đơn giản. Cơ sở cho việc này là việc lưu trữ các thành phần, do đó, đòi hỏi một cách tiếp cận thống nhất để lưu trữ và sử dụng chúng sau này. Có mọi lý do để tin rằng trong tương lai gần, các tài liệu XML sẽ cung cấp giải pháp thay thế cho việc lưu trữ các thành phần dưới dạng mô-đun nhị phân, điều này phổ biến hiện nay. Nhúng dữ liệu Khi chúng ta đã xác định cấu trúc của dữ liệu XML, về cơ bản là dễ dàng viết một trình tạo mã xử lý dữ liệu này. Khi phần mềm như vậy phát triển, tất cả quá trình xử lý dữ liệu thông thường (bao gồm kiểm tra tính chính xác, trình bày ở định dạng được yêu cầu, v.v.) có thể được tự động hóa, cho phép các nhà phát triển tập trung vào các phần không chuẩn của sản phẩm đang được tạo.

8.1.3. Cấu trúc tài liệu XML

Một tài liệu XML bao gồm các khai báo, phần tử, nhận xét, ký tự đặc biệt và chỉ thị. Tất cả các thành phần của tài liệu này được mô tả trong chương này.

8.1.3.1. Các yếu tố và thuộc tính

XML cái này ngôn ngữ được gắn thẻđánh dấu tài liệu. Nói cách khác, bất kỳ tài liệu XML nào cũng là một tập hợp yếu tố, và phần đầu và phần cuối của mỗi phần tử được biểu thị bằng các dấu đặc biệt gọi là thẻ.

Một phần tử bao gồm ba phần: thẻ bắt đầu, nội dung và thẻ kết thúc. Thẻ là văn bản được đặt trong dấu ngoặc nhọn "<" и ">". Thẻ kết thúc có cùng tên với thẻ bắt đầu, nhưng bắt đầu bằng dấu gạch chéo lên "/". Phần tử XML ví dụ:

Serge Dovlatov

Tên phần tử có phân biệt chữ hoa chữ thường, tức là , đây là tên của các yếu tố khác nhau. Thẻ đóng luôn luôn được yêu cầu. Nếu thẻ là trống, tức là không có nội dung và thẻ đóng thì nó có dạng đặc biệt:

<элемент/>

Bất kỳ phần tử nào cũng có thể có thuộc tính, chứa thông tin bổ sung về phần tử. Các thuộc tính luôn được bao gồm trong thẻ bắt đầu của phần tử và có dạng như sau:

Thuộc tính_name="thuộc tính_value"

Thuộc tính phải có giá trị và luôn được đặt trong dấu ngoặc đơn hoặc dấu ngoặc kép. Tên thuộc tính cũng phân biệt chữ hoa chữ thường. Một ví dụ về một phần tử có thuộc tính:

Serge Dovlatov

Các phần tử phải nối tiếp nhau hoặc được lồng vào nhau:

Phần của bài phát biểu Brodsky, Joseph Tháng ba của cô đơn Dovlatov, Sergey

Ở đây, phần tử books chứa hai phần tử book lồng nhau, lần lượt có thuộc tính isbn và chứa ba phần tử liên tiếp: tiêu đề, tác giả và hiện tại, phần tử sau trống , vì trong trường hợp này nó tương ứng với một cờ logic.

Từ mô tả ở trên, rõ ràng cú pháp XML giống với cú pháp HTML (điều này là tự nhiên, vì cả hai đều là phương ngữ của cùng một ngôn ngữ SGML), nhưng các yêu cầu để thiết kế các tài liệu XML chính xác cao hơn. Một điểm khác biệt rất quan trọng khác giữa XML và HTML là nội dung của các phần tử, tức là mọi thứ chứa giữa thẻ bắt đầu và thẻ kết thúc, đều được coi là dữ liệu. Điều này có nghĩa là XML không bỏ qua dấu cách và ngắt dòng như HTML.

8.1.3.2. Lời mở đầu và chỉ thị

Bất kỳ tài liệu XML nào cũng bao gồm lời mở đầuphần tử gốc, Ví dụ:

Tháng ba của cô đơn Dovlatov, Sergey

Trong ví dụ này, phần mở đầu được rút gọn thành một chỉ thị (dòng đầu tiên của tài liệu) cho biết phiên bản XML. Theo sau nó là một phần tử XML có tên duy nhất, chứa tất cả các phần tử khác và được gọi là phần tử gốc. Chỉ thị (lệnh xử lý) là một biểu thức được đặt trong các thẻ đặc biệt "", chứa các hướng dẫn cho chương trình xử lý tài liệu XML.

Tiêu chuẩn XML chỉ bảo lưu một lệnh , cho biết phiên bản ngôn ngữ XML mà tài liệu này tương ứng (chưa có phiên bản XML thứ hai). Trên thực tế, lệnh này phong phú hơn một chút và ở dạng tổng quát nhất của nó trông như thế này:

Ở đây thuộc tính mã hóa chỉ định mã hóa ký tự của tài liệu. Theo mặc định, tài liệu XML phải được tạo ở định dạng UTF-8 hoặc UTF-16. Nếu sử dụng bất kỳ mã hóa ký tự nào khác thì tên của nó theo Bảng A7.1 phải được chỉ định trong thuộc tính này, như trong ví dụ. Thuộc tính độc lập cho biết tài liệu có chứa hay không. Giá trị có có nghĩa là không có phần nào như vậy, giá trị không có nghĩa là chúng tồn tại.

8.1.3.3. Bình luận

Tài liệu XML có thể chứa bình luận, bị ứng dụng xử lý tài liệu bỏ qua. Nhận xét tuân theo các quy tắc tương tự như trong HTML:

  • bắt đầu bình luận của bạn với "",
  • Không sử dụng ký tự "--" trong phần bình luận.

Ví dụ nhận xét:

8.1.3.4. Tên và chi tiết

Tất cả tên các phần tử, thuộc tính và phần phải bắt đầu bằng một chữ cái Unicode và bao gồm các chữ cái, số, dấu chấm (.), dấu gạch dưới (_) và dấu gạch nối (-). Hạn chế duy nhất là chúng không được bắt đầu bằng sự kết hợp của các chữ cái xml trong mọi trường hợp; những tên như vậy được dành riêng cho các phần mở rộng ngôn ngữ trong tương lai. Điều quan trọng là tiêu chuẩn này cho phép sử dụng không chỉ các chữ cái tiếng Anh trong tên mà còn bất kỳ chữ cái nào khác, mặc dù các bộ xử lý XML hiện tại thường bị giới hạn bởi các hệ thống mã hóa mà người tạo ra chúng nghĩ đến. Đó là lý do tại sao chúng tôi viết tên bằng tiếng Anh trong các ví dụ của mình.

Dữ liệu, tức là nội dung phần tử và giá trị thuộc tính, có thể bao gồm bất kỳ ký tự nào ngoại trừ những ký tự được liệt kê trong phần tiếp theo.

8.1.3.5. Ký hiệu đặc biệt

Một số ký tự trong XML được dành riêng và phải được biểu diễn theo cách đặc biệt:

Nếu muốn, bạn có thể sử dụng mã hóa ký tự số theo tiêu chuẩn Unicode. Trong trường hợp này, ký hiệu có thể được chỉ định bằng mã thập phân của nó ( mã số; ) hoặc mã thập lục phân ( mã số; ). Ví dụ © đại diện cho biểu tượng bản quyền © , MỘT MỘT– Thư Nga MỘT. Như chúng ta sẽ thấy sau, XML phong phú hơn nhiều so với HTML trong việc sử dụng các cấu trúc như vậy, vì nó cho phép thay thế bất kỳ biểu thức ký hiệu nào vào văn bản của tài liệu.

8.1.3.6. Phần CDATA

Một cách khác để đưa các ký tự không hợp lệ vào nội dung của các phần tử XML là sử dụng cái gọi là. phần CDATA(viết tắt từ Character DATA, tức là dữ liệu ký tự). Giả sử chúng ta muốn biến nội dung của thành phần bố cục thành một đoạn văn bản HTML, ví dụ:

Tiêu đề

Cấu trúc này không chính xác vì thẻ HTML H1 sẽ được coi là thẻ XML trong trường hợp này. Để toàn bộ nội dung của thành phần bố cục được coi là dữ liệu, chúng ta phải đặt nó trong phần CDATA:

Như chúng ta có thể thấy từ ví dụ này, phần CDATA được đặt trong các dấu phân cách. Mọi thứ bên trong phần này đều được coi là dữ liệu ký tự; đặc biệt, các phần CDATA không thể lồng nhau.

8.1.4. Các phần và khai báo của chúng

8.1.4.1. Phần tài liệu XML

Về mặt vật lý, một tài liệu XML có thể bao gồm một số phần(các thực thể). Trong trường hợp này, phần tử gốc của tài liệu cũng là một phần, được gọi là phần của tài liệu, mặc dù nó không được thiết kế đặc biệt theo bất kỳ cách nào. Tất cả các phần đều có nội dung; Tất cả chúng, ngoại trừ phần tài liệu và DTD bên ngoài, đều có tên.

Từ quan điểm phân tích cú pháp tài liệu, các phần được chia thành phân tích cú pháp và không phân tích cú pháp. Phần chưa được phân tích cú pháp(thực thể chưa được phân tích cú pháp) là tài nguyên có nội dung được bộ xử lý XML xử lý dưới dạng dữ liệu ngoài mà không phân tích cú pháp (ví dụ: văn bản không phải là tài liệu XML). Các phần chưa được phân tích cú pháp luôn có ký hiệu, cho biết định dạng của chúng. Phần được phân tích(các thực thể được phân tích cú pháp) được thiết kế để thay thế văn bản: bất cứ khi nào bộ xử lý XML gặp tên của một phần như vậy trong tài liệu, nó sẽ thay thế nó bằng nội dung của phần đó.

8.1.4.2. Phần nội bộ

Phần khai báo được chia thành nội bộ và bên ngoài. Tuyên bố phần nội bộ trông như thế:

Nó bao gồm nội dung của đối tượng (tham số giá trị) và được sử dụng để thay thế giá trị này thay vì tên phần. Ví dụ: chúng ta có thể giới thiệu thuộc tính trong ví dụ với sách thể loại và sử dụng các phần nội bộ để đặt thể loại:

]> Phần của bài phát biểu Brodsky, Joseph Tháng ba của cô đơn Dovlatov, Sergey

Từ ví dụ này rõ ràng rằng liên kết đến phần (tham chiếu thực thể) trông giống hệt như tham chiếu ký tự đặc biệt, tức là nó có dạng &name; . Trên thực tế, các ký tự đặc biệt giống hệt như các tham chiếu nhưng các phần tương ứng được chỉ định ngầm trong phần khai báo bên trong của ngôn ngữ XML. Việc thay thế văn bản như vậy rất hữu ích cho việc chỉ định các chữ viết tắt nhằm giảm kích thước của tài liệu và để giới thiệu các ký hiệu cho các trường tài liệu được thay đổi thường xuyên. Vì vậy, ví dụ: chúng ta có thể đặt ngày sửa đổi tiếp theo của một ấn phẩm vào một phần nội bộ và sau đó chỉ thay đổi giá trị của phần này.

8.1.4.3. Phân vùng bên ngoài

Có hai lựa chọn khai báo phần bên ngoài:

Tùy chọn đầu tiên được gọi phân vùng hệ thống, thứ hai phần công cộng. Cả hai đều liên kết tên phần với tài nguyên bên ngoài được chỉ định bởi URI của nó, tài nguyên này phải ở dạng được mã hóa và không chứa. URI của tài nguyên bên ngoài được gọi là ID hệ thống của phân vùng. Việc sử dụng nguồn lực bên ngoài phụ thuộc vào một số yếu tố:

  • Nếu phần khai báo chứa tham số NDATA chỉ định ký hiệu phần thì phần đó sẽ không được phân tích cú pháp.
  • Nếu tham số NDATA không được chỉ định thì phần này sẽ được phân tích cú pháp và tài nguyên tương ứng phải là tài liệu XML. Điều này có nghĩa là thay vì liên kết đến một phần, văn bản của tài liệu sẽ bao gồm văn bản của tài nguyên tương ứng.
  • Phần công khai có thể chứa một dòng chỉ định ID phần công khai. Bộ xử lý XML có thể sử dụng mã định danh này để tạo URI thay thế cho phần này. Nếu thất bại thì nó phải sử dụng ID hệ thống để tải nội dung của phân vùng.

Ví dụ về khai báo tài nguyên bên ngoài:

Phần bên ngoài được phân tích cú pháp phải bắt đầu bằng một lệnh, lệnh này có thể không chứa số phiên bản nhưng phải chứa mã hóa ký tự. Lệnh này không phải là một phần của văn bản nội tuyến.

8.1.5. Khai báo loại tài liệu

Khai báo loại tài liệu XML(khai báo loại tài liệu) chứa định nghĩa loại tài liệu(định nghĩa loại tài liệu, DTD) hoặc trỏ đến một. DTD là một ngữ pháp đặc biệt mô tả cú pháp của một loại tài liệu nhất định; các quy tắc tạo DTD được thảo luận trong Chương. 8.2. Ở đây chúng tôi chỉ mô tả các khai báo cung cấp quyền truy cập vào DTD. Khai báo loại tài liệu, giống như khai báo phần, có thể là nội bộ hoặc bên ngoài. Tuyên bố nội bộ trông giống như:

và bên ngoài có hai tùy chọn giống như các phân vùng bên ngoài:

Vì vậy, sự khác biệt giữa khai báo loại tài liệu và khai báo phần chỉ là:

  • nó bắt đầu bằng từ khóa!DOCTYPE, không phải!ENTITY;
  • nó có thể có phần thân được đặt trong dấu ngoặc vuông.

Tên của một khai báo như vậy phải trùng với tên của phần tử gốc mà nó mô tả và phần thân phải tuân thủ các quy tắc xây dựng DTD và sẽ được mô tả trong Chương. 8.2. Hiện tại, hãy lưu ý rằng nó có thể chứa các khai báo phần. Một ví dụ về khai báo nội bộ đã được đưa ra trong. Ví dụ về khai báo bên ngoài:

Lưu ý rằng một khai báo kiểu tài liệu bên ngoài cũng có thể chứa tham chiếu đến DTD, được gọi là tập hợp con bên ngoài DTD và phần mô tả các phần bổ sung cho DTD bên ngoài (được gọi là tập hợp con nội bộĐTD).

8.1.6. Tài liệu XML mẫu

Để tổng hợp tất cả các khái niệm được mô tả ở trên thành một tổng thể duy nhất, đây là ví dụ về một tài liệu XML hoàn chỉnh chứa bảng giá của hiệu sách.

]> Tháng ba của sự diệt vong Serge Dovlatov 60.00 Phần của bài phát biểu Joseph Brodsky 55.00 Antigone Sophocles 103.50

Chúng ta tiếp tục nghiên cứu về XML một lần nữa và trong bài viết này chúng ta sẽ làm quen với các cấu trúc XML như hướng dẫn xử lý, nhận xét, thuộc tính và các phần tử XML khác. Những yếu tố này là cơ bản và cho phép bạn đánh dấu các tài liệu có độ phức tạp hoàn toàn bất kỳ theo đúng tiêu chuẩn một cách linh hoạt, theo đúng tiêu chuẩn.

Chúng tôi đã thảo luận một phần về một số điểm, chẳng hạn như thẻ XML, trong bài viết trước “”. Bây giờ chúng ta sẽ đề cập lại chủ đề này và xem xét nó chi tiết hơn. Điều này được thực hiện cụ thể để giúp bạn dễ dàng có được bức tranh đầy đủ về cấu trúc XML.

Các phần tử XML. Các phần tử XML trống và không trống

Như đã đề cập trong bài viết trước, các thẻ trong XML không chỉ đánh dấu văn bản như trong HTML mà còn làm nổi bật các phần tử (đối tượng) riêng lẻ. Đổi lại, các phần tử sắp xếp thông tin theo thứ bậc trong tài liệu, từ đó biến chúng thành đơn vị cấu trúc chính của ngôn ngữ XML.

Trong XML, các phần tử có thể có hai loại - trống và không trống. Các phần tử trống không chứa bất kỳ dữ liệu nào, chẳng hạn như văn bản hoặc các cấu trúc khác. Không giống như các phần tử trống, các phần tử không trống có thể chứa bất kỳ dữ liệu nào, chẳng hạn như văn bản hoặc các phần tử và cấu trúc XML khác. Để hiểu ý ở trên, chúng ta hãy xem các ví dụ về các phần tử XML trống và không trống.

Phần tử XML trống

Phần tử XML không trống

Nội dung phần tử...

Như chúng ta có thể thấy từ ví dụ trên, sự khác biệt chính giữa các phần tử trống và phần tử không trống là chúng chỉ bao gồm một thẻ. Ngoài ra, cũng cần lưu ý rằng trong XML tất cả các tên đều phân biệt chữ hoa chữ thường. Điều này có nghĩa là các tên myElement, MyElement, MYELEMENT, v.v. khác nhau nên cần ghi nhớ ngay khoảnh khắc này để tránh mắc sai lầm về sau.
Vì vậy, chúng tôi đã tìm ra các yếu tố. Bây giờ chúng ta hãy chuyển sang điểm tiếp theo, đó là cách tổ chức logic của các tài liệu XML.

Tổ chức logic của các tài liệu XML. Cấu trúc cây của dữ liệu XML

Như bạn nhớ, cấu trúc chính của ngôn ngữ XML là các phần tử, chúng có thể chứa các cấu trúc lồng nhau khác và do đó tạo thành cấu trúc phân cấp dưới dạng cây. Trong trường hợp này, phần tử cha sẽ là gốc và tất cả các phần tử con khác sẽ là nhánh và lá của cây XML.

Để dễ hiểu hơn ở trên, chúng ta hãy xem hình ảnh sau đây với một ví dụ.

Như chúng ta có thể thấy, việc tổ chức một tài liệu XML dưới dạng cây là một cấu trúc khá đơn giản để xử lý. Đồng thời, độ phức tạp biểu đạt của bản thân cây cũng khá lớn. Biểu diễn cây là cách tối ưu nhất để mô tả các đối tượng trong XML.

Thuộc tính XML. Quy tắc viết thuộc tính trong XML

Trong XML, các phần tử cũng có thể chứa các thuộc tính với các giá trị được gán cho chúng, được đặt trong dấu ngoặc đơn hoặc dấu ngoặc kép. Thuộc tính cho một phần tử được đặt như sau:

Trong trường hợp này, một thuộc tính có tên “thuộc tính” và giá trị “giá trị” đã được sử dụng. Cần lưu ý ngay rằng thuộc tính XML phải chứa một số giá trị và không được để trống. Nếu không, mã sẽ không chính xác theo quan điểm XML.

Nó cũng đáng chú ý đến việc sử dụng dấu ngoặc kép. Giá trị thuộc tính có thể được đặt trong dấu ngoặc đơn hoặc dấu ngoặc kép. Ngoài ra, cũng có thể sử dụng một số dấu ngoặc kép bên trong những dấu ngoặc kép khác. Để chứng minh, hãy xem xét các ví dụ sau.

Trước khi chúng ta xem xét các cấu trúc XML khác, cũng cần lưu ý rằng khi tạo thuộc tính, các ký tự đặc biệt như dấu và "&" hoặc dấu ngoặc nhọn " không thể được sử dụng làm giá trị.<>" Các ký tự này được dành riêng làm ký tự điều khiển (“&” là một thực thể và “<» и «>» mở và đóng thẻ phần tử) và không thể được sử dụng ở dạng thuần túy của nó. Để sử dụng chúng, bạn cần dùng đến cách thay thế các ký tự đặc biệt.

Hướng dẫn xử lý XML (hướng dẫn xử lý). Khai báo XML

XML có khả năng bao gồm các hướng dẫn trong tài liệu mang thông tin cụ thể cho các ứng dụng sẽ xử lý một tài liệu cụ thể. Hướng dẫn xử lý trong XML được tạo như sau.

Như bạn có thể thấy từ ví dụ trên, trong XML, các hướng dẫn xử lý được đặt trong dấu ngoặc kép ở góc có dấu chấm hỏi. Điều này hơi giống với cách thông thường mà chúng ta đã xem trong các bài học PHP đầu tiên. Phần đầu tiên của lệnh xử lý xác định ứng dụng hoặc hệ thống mà phần thứ hai của lệnh này hoặc nội dung của nó hướng tới. Tuy nhiên, hướng dẫn xử lý chỉ có hiệu lực đối với những ứng dụng mà chúng được xử lý. Một ví dụ về lệnh xử lý có thể là lệnh sau.

Điều đáng lưu ý là XML có một cấu trúc đặc biệt rất giống với một lệnh xử lý, nhưng bản thân nó không phải là một cấu trúc đó. Chúng ta đang nói về một khai báo XML truyền đến phần mềm xử lý một số thông tin về các thuộc tính của tài liệu XML, chẳng hạn như mã hóa, phiên bản ngôn ngữ mà tài liệu được viết, v.v.

Như bạn có thể thấy từ ví dụ trên, khai báo XML chứa cái gọi là thuộc tính giả, rất giống với các thuộc tính thông thường mà chúng ta đã nói ở trên. Thực tế là, theo định nghĩa, một khai báo và hướng dẫn xử lý XML không thể chứa các thuộc tính, vì vậy những khai báo này được gọi là thuộc tính giả. Điều này đáng ghi nhớ cho tương lai để tránh những sai lầm khác nhau.

Vì chúng ta đã xử lý các thuộc tính giả nên hãy xem ý nghĩa của chúng.

  • Mã hóa - chịu trách nhiệm mã hóa tài liệu XML. Thông thường mã hóa UTF8 được sử dụng.
  • Phiên bản – phiên bản ngôn ngữ XML mà tài liệu này được viết. Thông thường đây là phiên bản XML 1.0.

Chà, bây giờ chúng ta hãy chuyển sang phần kết luận của bài viết và xem xét các cấu trúc XML như vậy dưới dạng các phần nhận xét và phần CDATA.

Cú pháp đánh dấu.

Để giới hạn các thẻ trong đánh dấu XML, giống như trong HTML, dấu ngoặc nhọn được sử dụng: thẻ bắt đầu bằng dấu nhỏ hơn (<) и завершается знаком "больше" (>). Nhưng điều quan trọng cần nhớ là, không giống như HTML, tất cả đánh dấu XML đều phân biệt chữ hoa chữ thường, bao gồm cả tên thẻ và giá trị thuộc tính.

Biểu tượng.

Vì XML nhằm mục đích sử dụng rộng rãi nên các ký tự không bị giới hạn ở bộ ký tự ASCII 7 bit. Các ký tự được phép trong XML bao gồm ba ký tự điều khiển ASCII, tất cả các ký tự ASCII thông thường và hầu hết tất cả các ký tự Unicode khác.

Tên.

Trong XML, tất cả các tên phải bắt đầu bằng một chữ cái, dấu gạch dưới (_) hoặc dấu hai chấm (:) và chỉ tiếp tục bằng các ký tự tên hợp lệ, chỉ có thể chứa các chữ cái có trong phần ký tự Unicode, chữ số Ả Rập, dấu gạch nối, dấu gạch dưới, dấu chấm và dấu hai chấm. Tuy nhiên, tên không thể bắt đầu bằng chuỗi xml trong mọi trường hợp. Tên bắt đầu bằng các ký tự này được W3C dành riêng để sử dụng. Cần phải nhớ rằng vì các chữ cái không chỉ giới hạn ở các ký tự ASCII nên các từ trong ngôn ngữ mẹ đẻ của bạn có thể được sử dụng trong tên.

Cấu trúc tài liệu XML.

Bất kỳ tài liệu XML nào cũng bao gồm các phần sau:

    Lời mở đầu tùy chọn.

    Phần thân của tài liệu.

    Phần kết tùy chọn theo sau cây phần tử.

Chúng ta hãy xem xét từng phần chi tiết hơn.

Lời mở đầu của tài liệu XML.

Tài liệu XML bắt đầu bằng phần mở đầu. Phần mở đầu chứa một số hướng dẫn dành cho trình phân tích cú pháp XML và các ứng dụng.

Lời mở đầu bao gồm một số phần:

    một Khai báo XML tùy chọn được đặt giữa các ký tự. Quảng cáo có chứa:

    dấu xml và số phiên bản của đặc tả XML;

    dấu hiệu của mã hóa ký tự (mã hóa) trong đó tài liệu được viết (theo mã hóa mặc định="UTF-8");

    tham số độc lập có thể nhận các giá trị "có" hoặc "không" (theo mặc định độc lập = "có"). Giá trị "có" cho biết rằng tài liệu chứa tất cả các khai báo phần tử bắt buộc và "không" cho biết rằng các DTD bên ngoài là bắt buộc.

Tất cả điều này cùng nhau có thể trông như thế này:

.

Điều quan trọng cần lưu ý là trong khai báo XML, chỉ yêu cầu thuộc tính phiên bản, tất cả các thuộc tính khác có thể bị bỏ qua và do đó lấy giá trị mặc định. Bạn cũng cần nhớ rằng tất cả các thuộc tính này chỉ nên được chỉ định theo thứ tự nêu trên.

    bình luận.

    các lệnh xử lý.

    ký hiệu khoảng trống.

    một khai báo loại tài liệu tùy chọn, DTD (Tuyên bố loại tài liệu) được đặt giữa các ký tựvà có thể trải dài trên nhiều dòng. Phần này khai báo các thẻ được sử dụng trong tài liệu hoặc cung cấp liên kết đến tệp mà các khai báo đó được ghi lại.

Sau phần khai báo loại tài liệu cũng có thể có các nhận xét, lệnh xử lý và ký tự khoảng trắng.

Vì tất cả những phần này là tùy chọn nên phần mở đầu có thể được bỏ qua.

Phần thân của tài liệu XML.

Phần thân của tài liệu bao gồm một hoặc nhiều phần tử. Trong một tài liệu XML được định dạng đúng, các phần tử tạo thành một cây phân cấp đơn giản, cây này nhất thiết phải chứa một phần tử gốc mà tất cả các phần tử khác của tài liệu được lồng vào đó. XML đặt ra một ràng buộc cực kỳ quan trọng đối với các phần tử: chúng phải được lồng vào nhau một cách chính xác. Điều này làm cho việc lồng một tài liệu XML vào một tài liệu XML khác khá dễ dàng mà không làm xáo trộn cấu trúc của tài liệu và phần tử gốc của tài liệu được lồng sẽ đơn giản trở thành một trong các phần tử của tài liệu mà nó được lồng trong đó. Về vấn đề này, chúng tôi phải đối mặt với một hạn chế khác, đó là tên của các thành phần phải là duy nhất trong tài liệu, vì trong tài liệu đi kèm, các tên giống như trong tài liệu kèm theo có thể có ý nghĩa hoàn toàn khác. Để giải quyết vấn đề trùng tên, khái niệm không gian tên đã được đưa ra.

Tên của phần tử gốc được coi là tên của toàn bộ tài liệu và được chỉ định trong phần thứ hai của phần mở đầu sau từ Doctype. Nếu DTD nằm trong tài liệu XML, nó sẽ được đặt trong dấu ngoặc vuông sau tên của phần tử gốc:

Nhưng thông thường DTD được xác định cho nhiều tài liệu XML cùng một lúc. Trong trường hợp này, sẽ thuận tiện hơn khi viết nó riêng biệt với tài liệu và sau đó thay vì dấu ngoặc vuông, một trong các từ Hệ thống hoặc Công khai được viết theo sau là địa chỉ dưới dạng URI (Mã định danh tài nguyên thống nhất) ​​của tệp có định nghĩa DTD Đối với tất cả các mục đích thực tế, URI được coi là tương đương với một URL, mặc dù về nguyên tắc nó có thể là bất kỳ tên duy nhất nào. Ví dụ: định nghĩa DTD có thể trông như thế này:

Không gian tên XML

Vì các tài liệu XML khác nhau có thể chứa cùng tên của các thẻ và thuộc tính của chúng, có ý nghĩa hoàn toàn khác nhau nên cần có khả năng phân biệt giữa chúng bằng cách nào đó. Để làm điều này, tên của thẻ và thuộc tính được cung cấp một tiền tố ngắn, được phân tách khỏi tên bằng dấu hai chấm. Tiền tố tên được liên kết với một mã định danh xác định không gian tên. Tất cả các tên thẻ và thuộc tính có tiền tố được liên kết với cùng một mã định danh tạo thành một không gian tên duy nhất, trong đó các tên phải là duy nhất. Tiền tố và mã định danh không gian tên được xác định bởi thuộc tính xmlns như sau:

Trong phần sau đây, tên của các thẻ và thuộc tính mà chúng tôi muốn gán cho không gian tên "http://URI_namespace" có tiền tố là ns, ví dụ:

Novosibirsk.

Thuộc tính xmlns có thể xuất hiện trên bất kỳ phần tử XML nào, không chỉ phần tử gốc. Tiền tố mà nó xác định có thể được sử dụng trong phần tử trong đó thuộc tính xmlns được viết và trong tất cả các phần tử được lồng trong đó. Hơn nữa, nhiều không gian tên có thể được xác định trong một phần tử. Trong các phần tử lồng nhau, không gian tên có thể được ghi đè bằng cách liên kết tiền tố với một mã định danh khác. Sự xuất hiện của tên thẻ không có tiền tố trong tài liệu sử dụng không gian tên có nghĩa là tên đó thuộc về không gian tên mặc định. Tiền tố bắt đầu bằng ký tự xml trong mọi trường hợp đều được dành riêng cho chính ngôn ngữ XML.

Tên cùng với tiền tố được gọi là tên mở rộng hoặc đủ điều kiện. Phần tên viết sau dấu hai chấm được gọi là phần địa phương của tên.

Mã định danh không gian tên phải ở dạng URI. URI không có ý nghĩa và có thể không tương ứng với bất kỳ địa chỉ Internet thực tế nào. Trong trường hợp này, URI có thể được coi là một chuỗi ký tự duy nhất xác định một vùng tên.

Theo các quy tắc của SGML và XML, dấu hai chấm có thể được sử dụng trong tên như một ký tự thông thường, do đó, bất kỳ chương trình, "không biết" không gian tên, phân tích tài liệu và coi tên đủ điều kiện như một tên duy nhất thông thường. Đặc biệt, các tiền tố tên không thể bị bỏ qua trong Tuyên bố loại tài liệu.

Các yếu tố.

Một tài liệu XML bao gồm các phần tử. Phần tử bắt đầu bằng thẻ mở, sau đó là nội dung tùy chọn của phần tử, theo sau là thẻ đóng (không giống như HTML, bắt buộc phải có thẻ đóng, ngoại trừ các phần tử không có nội dung, gọi là phần tử trống, có thể viết dưới dạng rút gọn) . Nội dung của một phần tử có thể là các phần tử khác, mang tính biểu tượng dữ liệu, tham chiếu ký hiệu, tham chiếu thực thể, nhận xét, phần CDATA, hướng dẫn xử lý.

Thẻ mở.

Thẻ mở bắt đầu bằng dấu nhỏ hơn (<) и завершается знаком "больше" (>), chứa tên của phần tử:

<имя_элемента>.

Đóng thẻ.

Thẻ đóng bắt đầu bằng dấu nhỏ hơn (<) за которым следует "косая черта" (/) после которой повторяется имя элемента из соответствующего открывающего тега и завершается знаком "больше" (>):

.

Cần nhớ rằng mỗi thẻ đóng phải tương ứng với thẻ mở của nó, đồng thời việc lồng các thẻ trong XML cũng được kiểm soát chặt chẽ nên cần theo dõi thứ tự các thẻ mở và đóng.

Vì vậy, phần tử hoàn chỉnh trông như thế này:

<имя_элемента>nội dung phần tử

Các phần tử trống.

Nếu nội dung của phần tử không chứa một ký tự nào, thậm chí không có khoảng trắng thì không cần phải viết thẻ đóng. Trong trường hợp này, thẻ mở phải kết thúc bằng ký tự “/>”.

Do đó, thẻ phần tử trống bắt đầu bằng dấu nhỏ hơn (<) за которым следует имя элемента и завершается знаками "косая черта" (/) после которой идет знак "больше" (>):

<имя_элемента/>.

Dữ liệu ký tự.

Tính cách dữ liệu là bất kỳ văn bản nào là nội dung của một phần tử hoặc giá trị của một thuộc tính. Nếu bạn cần chèn một số ký hiệu vào nội dung của một phần tử dùng cho mục đích dịch vụ, ví dụ dấu “lớn hơn” hoặc “nhỏ hơn” là dấu phân cách đánh dấu và có thể hiểu là phần đầu hoặc phần cuối của một phần tử lồng nhau. thì các ký tự này phải được thay thế bằng các liên kết hoặc mã số của chúng.

Để chèn một ký hiệu nhất định vào văn bản của tài liệu, ví dụ, ký hiệu này không có trong bố cục bàn phím hoặc có thể bị máy phân tích giải thích không chính xác, các tham chiếu ký hiệu sẽ được sử dụng. Tham chiếu ký hiệu phải bắt đầu bằng ký hiệu và kết thúc bằng dấu chấm phẩy.

ký tự_code_in_Unicode;.

Mã ký tự cũng có thể được viết ở định dạng thập lục phân. Trong trường hợp này, nó đứng trước ký hiệu "x":

Mã_ký tự_thập lục phân;.

Ngoài ra, còn có các thay thế được đặt tên, được xác định trong đặc tả XML và được triển khai trong tất cả các trình phân tích cú pháp tương thích với XML, giúp văn bản tài liệu dễ đọc hơn với con người. Bằng cách sử dụng các thay thế được đặt tên này, bạn có thể chèn các ký tự như:

Biểu tượng

Thay thế được đặt tên

Tham chiếu thực thể cho phép bạn đưa bất kỳ hằng chuỗi nào vào nội dung của các phần tử hoặc giá trị của thuộc tính. Tham chiếu thực thể, cũng như tham chiếu ký tự, bắt đầu bằng ký hiệu, theo sau là tên thực thể và kết thúc bằng dấu chấm phẩy:

Bình luận.

Nếu bạn cần chèn một nhận xét vào văn bản của tài liệu hoặc tạo một số đoạn "ẩn" cho chương trình phân tích, thì nó được định dạng như sau:

XML được dự định sẽ được sử dụng rộng rãi, các ký tự không bị giới hạn ở bộ ký tự ASCII 7 bit. Các ký tự được phép trong XML bao gồm ba ký tự điều khiển ASCII, tất cả các ký tự ASCII thông thường và hầu hết tất cả các ký tự Unicode khác.

Tên.

Trong XML, tất cả các tên phải bắt đầu bằng một chữ cái, dấu gạch dưới (_) hoặc dấu hai chấm (:) và chỉ tiếp tục bằng các ký tự tên hợp lệ, chỉ có thể chứa các chữ cái có trong phần ký tự Unicode, chữ số Ả Rập, dấu gạch nối, dấu gạch dưới, dấu chấm và dấu hai chấm. Tuy nhiên, tên không thể bắt đầu bằng chuỗi xml trong mọi trường hợp. Những tên bắt đầu bằng những ký tự này được W3C dành riêng để sử dụng. Cần phải nhớ rằng vì các chữ cái không chỉ giới hạn ở các ký tự ASCII nên các từ trong ngôn ngữ mẹ đẻ của bạn có thể được sử dụng trong tên.

Cấu trúc tài liệu XML.

Bất kỳ tài liệu XML nào cũng bao gồm các phần sau:

  • Lời mở đầu tùy chọn.
  • Phần thân của tài liệu.
  • Phần kết tùy chọn theo sau cây phần tử.

Chúng ta hãy xem xét từng phần chi tiết hơn.

Lời mở đầu của tài liệu XML.

Tài liệu XML bắt đầu bằng phần mở đầu. Phần mở đầu chứa một số hướng dẫn dành cho trình phân tích cú pháp XML và các ứng dụng.

Lời mở đầu bao gồm một số phần:

  1. một Khai báo XML tùy chọn được đặt giữa các ký tự. Quảng cáo có chứa:
    • dấu xml và số phiên bản của đặc tả XML;
    • dấu hiệu của mã hóa ký tự (mã hóa) trong đó tài liệu được viết (theo mã hóa mặc định="UTF-8");
    • tham số độc lập có thể nhận các giá trị "có" hoặc "không" (theo mặc định là độc lập="có" ). Giá trị "có" cho biết rằng tài liệu chứa tất cả các khai báo phần tử bắt buộc và "không" cho biết rằng các DTD bên ngoài là bắt buộc.

    Tất cả điều này cùng nhau có thể trông như thế này:

    .

    Điều quan trọng cần lưu ý là trong khai báo XML, chỉ yêu cầu thuộc tính phiên bản, tất cả các thuộc tính khác có thể bị bỏ qua và do đó lấy giá trị mặc định. Bạn cũng cần nhớ rằng tất cả các thuộc tính này chỉ nên được chỉ định theo thứ tự nêu trên.

  2. bình luận.
  3. các lệnh xử lý.
  4. ký hiệu khoảng trống.
  5. không bắt buộc khai báo loại tài liệu, DTD (Tuyên bố loại tài liệu) được đặt giữa các ký tựvà có thể trải dài trên nhiều dòng. Phần này khai báo các thẻ được sử dụng trong tài liệu hoặc cung cấp liên kết đến tệp mà các khai báo đó được ghi lại.

Sau đó khai báo loại tài liệu các nhận xét, lệnh xử lý và ký tự khoảng trắng cũng có thể theo sau.

Vì tất cả những phần này là tùy chọn nên phần mở đầu có thể được bỏ qua.

Phần thân của tài liệu XML.

Phần thân của tài liệu bao gồm một hoặc nhiều phần tử. Trong một tài liệu XML được định dạng đúng, các phần tử tạo thành một cây phân cấp đơn giản, nhất thiết phải chứa phần tử gốc( phần tử gốc ) trong đó tất cả các phần tử khác của tài liệu được lồng vào nhau. XML đặt ra một ràng buộc cực kỳ quan trọng đối với các phần tử: chúng phải được lồng vào nhau một cách chính xác. Điều này làm cho việc nhúng một tài liệu XML vào một tài liệu XML khác trở nên khá dễ dàng mà không vi phạm cấu trúc của tài liệu, đồng thời phần tử gốc của một tài liệu lồng nhau sẽ đơn giản trở thành một trong các thành phần của tài liệu mà nó được lồng vào đó. Về vấn đề này, chúng tôi phải đối mặt với một hạn chế khác, đó là tên của các thành phần phải là duy nhất trong tài liệu, vì trong tài liệu đi kèm, các tên giống như trong tài liệu kèm theo có thể có ý nghĩa hoàn toàn khác. Để giải quyết vấn đề trùng tên, khái niệm không gian tên đã được đưa ra.

Tên của phần tử gốc được coi là tên của toàn bộ tài liệu và được chỉ định trong phần thứ hai của phần mở đầu sau từ Doctype. Nếu định nghĩa DTD nằm trong tài liệu XML thì nó được đặt trong dấu ngoặc vuông sau tên của phần tử gốc:

Nhưng thông thường DTD được xác định cho nhiều tài liệu XML cùng một lúc. Trong trường hợp này, sẽ thuận tiện hơn khi viết nó riêng biệt với tài liệu và sau đó thay vì dấu ngoặc vuông, một trong các từ Hệ thống hoặc Công khai được viết theo sau là địa chỉ dưới dạng URI (Mã định danh tài nguyên thống nhất) ​​của tệp với định nghĩa DTD Đối với tất cả các mục đích thực tế, URI được coi là tương đương với một địa chỉ URL, mặc dù về nguyên tắc nó có thể là bất kỳ tên duy nhất nào. Ví dụ: định nghĩa DTD có thể trông như thế này:

Không gian tên XML

Vì các tài liệu XML khác nhau có thể chứa cùng tên của các thẻ và thuộc tính của chúng, có ý nghĩa hoàn toàn khác nhau nên cần có khả năng phân biệt chúng bằng cách nào đó. Để làm điều này, tên của thẻ và thuộc tính được cung cấp một tiền tố ngắn, được phân tách khỏi tên bằng dấu hai chấm. Tiền tố tên được liên kết với một mã định danh xác định không gian tên(không gian tên). Tất cả các tên thẻ và thuộc tính có tiền tố được liên kết với cùng một mã định danh tạo thành một không gian tên, trong đó tên phải là duy nhất. Tiền tố và mã định danh không gian tên được xác định bởi thuộc tính xmlns như sau:

Trong tương lai, tên của các thẻ và thuộc tính mà chúng ta muốn gán cho không gian tên "http://URI_namespace" có tiền tố là ns, ví dụ:

Novosibirsk.

Thuộc tính xmlns có thể xuất hiện trên bất kỳ phần tử XML nào, không chỉ phần tử gốc. Tiền tố mà nó xác định có thể được sử dụng trong phần tử trong đó thuộc tính xmlns được viết và trong tất cả các phần tử được lồng trong đó. Hơn nữa, nhiều không gian tên có thể được xác định trong một phần tử. Trong các phần tử lồng nhau không gian tên có thể được ghi đè bằng cách liên kết tiền tố với một mã định danh khác. Sự xuất hiện của tên thẻ không có tiền tố trong tài liệu sử dụng không gian tên, có nghĩa là tên thuộc về không gian tên mặc định. Tiền tố bắt đầu bằng ký tự xml trong mọi trường hợp đều được dành riêng cho chính ngôn ngữ XML.

Tên cùng với tiền tố được gọi là tên mở rộng hoặc đủ điều kiện. Phần tên viết sau dấu hai chấm được gọi là phần địa phương của tên.