2013-03-24 27 views
7

Theo định nghĩa:Thuộc tính noNamespaceSchemaLocation có thuộc tính nào trên phân tích cú pháp XML?

Thuộc tính noNamespaceSchemaLocation tham chiếu tài liệu Lược đồ XML không có vùng tên đích.

Thuộc tính này sẽ thay đổi kết quả phân tích cú pháp như thế nào?

Ví dụ, hãy XML này:

<?xml version="1.0"?> 
<name 
    xmlns="http://www.example.com/name" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.example.com/name schema/schema.xsd" 
    title="Mr."> 
    <first>John</first> 
    <middle>M</middle> 
    <last>Doe</last> 
</name> 

đề cập đến schema này:

<?xml version="1.0"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
xmlns:target="http://www.example.com/name" 
targetNamespace="http://www.example.com/name" elementFormDefault="qualified"> 
    <element name="name"> 
    <complexType> 
     <sequence> 
     <element name="first" type="string"/> 
     <element name="middle" type="string"/> 
     <element name="last" type="string"/> 
     </sequence> 
     <attribute name="title" type="string"/> 
    </complexType> 
    </element> 
</schema> 

Tôi đã gỡ bỏ những khai báo namespace từ sơ đồ:

xmlns:target="http://www.example.com/name" 
targetNamespace="http://www.example.com/name" 

mà không hề sử dụng noNamespaceSchemaLocation thuộc tính trong XML tham chiếu, không có lỗi nào được ném ra. Tại sao chúng ta thậm chí cần thuộc tính này ngay từ đầu?

Trả lời

8

Thuộc tính không ảnh hưởng đến trình phân tích cú pháp XML. Nó có thể ảnh hưởng đến hành vi của Bộ xử lý lược đồ XML nếu các tùy chọn thích hợp được thiết lập; và nó có thể tương tự ảnh hưởng đến hành vi của một chương trình kết hợp các chức năng của phân tích cú pháp XML và xác thực lược đồ XML. Nó cho một bộ xử lý lược đồ tìm kiếm một lược đồ mô tả tài liệu ở đâu.

Nhưng ngay cả với bộ xử lý lược đồ, thuộc tính noNamespaceSchemaLocation sẽ không ảnh hưởng đến việc xác thực tài liệu giống như tài liệu của bạn trong đó các phần tử đều nằm trong không gian tên.

+0

Cảm ơn bạn đã trả lời Michael. Tôi cho rằng câu hỏi của tôi nên là "Thuộc tính noNamespaceSchemaLocation có hiệu lực gì đối với xác thực * * *?". Nếu một phần tài liệu của tôi không có không gian tên, bạn có nghĩa đó là thời gian hiệu ứng noNamespaceSchemaLocation sẽ khởi động và khắc phục sự chồng chéo 'không có không gian tên' của dữ liệu và lược đồ? – Jops

+3

Thuộc tính cho bộ xử lý lược đồ biết nơi tìm kiếm một lược đồ có thể được sử dụng để xác thực các phần tử không có không gian tên. Trong ví dụ của bạn, không có bất kỳ yếu tố nào như vậy. –

+0

Ah, tuyệt. Cảm ơn Michael đã làm rõ. Hoàn toàn hiểu ngay bây giờ. – Jops

Các vấn đề liên quan