Đối với những người vẫn còn nhầm lẫn, hãy xem xét ba XSD. Tất cả chúng đều định nghĩa một kiểu toàn cục và một định nghĩa phần tử toàn cục tham chiếu nó.
Đầu tiên, một xsd giống như hình đã đăng ở trên. Nó sử dụng tiền tố 'xsd' cho không gian tên lược đồ, và một không gian tên mặc định cho targetNamespace:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns="http://example.com/">
<xsd:element name="aGlobalElement" type="aGlobalType"/>
<xsd:simpleType name="aGlobalType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>
Bây giờ xsd tương tự, nhưng việc xác định và sử dụng một tiền tố namespace cho namespace mục tiêu:
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns:tns="http://example.com/">
<xsd:element name="aGlobalElement" type="tns:aGlobalType"/>
<xsd:simpleType name="aGlobalType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
</xsd:schema>
... và cuối cùng, một phiên bản sử dụng một không gian tên mặc định thay vì 'xsd' cho không gian tên lược đồ XML:
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/"
xmlns:tns="http://example.com/">
<element name="aGlobalElement" type="tns:aGlobalType"/>
<simpleType name="aGlobalType">
<restriction base="string"/>
</simpleType>
</schema>
Hầu hết các tác giả schema chọn đầu tiên hoặc cuối cùng, bởi vì nếu cơ sở không gian tên mặc định có sẵn sau đó chúng tôi cũng có thể sử dụng nó cho một cái gì đó.
tôi có thể thiếu một số kiến thức về chủ đề này, nhưng có thể không phải là câu trả lời chỉ là: xmlns là không gian tên mặc định cho tài liệu này (tài liệu lược đồ), trong khi vùng tên miền targetNamespace là vùng tên mà tài liệu lược đồ này xác nhận? Và theo cách này, xmlns và targetNamespace là hai thứ khác nhau? – Vering
@Việc kiểm tra kết quả thử nghiệm của tôi là phù hợp với câu đầu tiên của bạn có targetNamespace chắc chắn đề cập đến tài liệu mà lược đồ xác nhận. Sự hiện diện của targetNamespace dường như cũng cần sự hiện diện của 'xmlns' hoặc 'xmlns: xxx'. Trong thực tế, bạn có thể kết hợp nhiều 'xmlns: xxx', 'xmlns: yyy' và 'xmlns' với nhau và nó vẫn xác nhận. – ifelsemonkey