Có một khái niệm rất quan trọng trong XML là không gian tên. Nó cho phép sử dụng cùng một tên của phần tử để khai báo các kiểu dữ liệu khác nhau trong cùng một tài liệu XML. Giống như có hai học sinh trùng tên Tuấn trong lớp học, ta phải dùng thêm họ của hai học sinh đó để phân biệt, ví dụ ta có thể gọi là Tuấn Trần hay Tuấn Lê. Không gian tên cung cấp phương thức để tránh xung đột giữa tên các phần tử trong XML.
Thuộc tính của không gian tên XML (xmlns) được đặt tại thẻ đầu tiên của mỗi phần tử và có cấu trúc như sau:
xmlns:namespace-prefix="namespaceURI"
trong đó “namespaceURI” là một chuỗi ký tự dùng để xác định một tài nguyên trên Internet. Dạng thường thấy nhất của URI là URL (Uniform Resource Locator) dùng để xác định một địa chỉ tên miền Internet.
Đinh Thị Huyền Trang – K11T3
Ví dụ: Có một tài liệu XML như sau: <?xml version="1.0"?> <BookOrder OrderNo="1234"> <OrderDate>2001-01-01</OrderDate> <Customer> <Title>Mr.</Title> <FirstName>Graeme</FirstName> <LastName>Malcolm</LastName> </Customer> <Book> <Title>Treasure Island</Title>
<Author>Robert Louis Stevenson</Author>
</Book> </BookOrder>
Ta thấy có thể có sự nhầm lẫn về cách dùng phần tử <Title>, vì trong tài liệu khai báo có hai phần tử <Title>: một dùng cho khách hàng <Customer> nói đến danh hiệu Mr., Mrs., Dr., còn một để nói đến đề tựa của một quyển sách <Book>.
Để tránh sự nhầm lẫn này, ta có thể dùng không gian tên để nói rõ tên phần tử con nào nằm trong phần tử cha nào. Ví dụ trên được viết lại như sau:
<?xml version="1.0"?> <BookOrder OrderNo="1234"> <OrderDate>2001-01-01</OrderDate> <Customer xmlns="http://www.northwindtraders.com/customer"> <Title>Mr.</Title> <FirstName>Graeme</FirstName> <LastName>Malcolm</LastName> </Customer> <Book xmlns="http://www.northwindtraders.com/book"> <Title>Treasure Island</Title> <Author>Robert Louis Stevenson</Author>
</Book> </BookOrder>