Sau đây tài liệu xml và schema được luộc xuống từ một schema lớn hơn nhiều, trong đó có vấn đề xảy ra đầu tiên:Tại sao 'không gian tên rỗng' được mong đợi cho một phần tử xml được định nghĩa là 'có' một không gian tên trong lược đồ?
Các tài liệu xml:
<f2b:Foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:f2b="http://www.outerfoospace.com/schemas/foo2bar" xsi:schemaLocation="http://www.outerfoospace.com/schemas/foo2bar f2b-0-0-0.xsd">
<f2b:Bar>text</f2b:Bar>
</f2b:Foo>
Giản đồ:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:f2b="http://www.outerfoospace.com/schemas/foo2bar" targetNamespace="http://www.outerfoospace.com/schemas/foo2bar">
<xs:complexType name="T_Foo">
<xs:sequence>
<xs:element name="Bar" xmlns="f2b"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Foo" type="f2b:T_Foo"/>
</xs:schema>
Khi tôi xác thực tài liệu đối với giản đồ, tôi nhận được thông báo lỗi trên số <f2b:Bar>
-nội dung nói rằng <f2b:Bar>
không được mong đợi. Để làm cho tài liệu hợp lệ, tôi phải đặt <Bar>
-element một cách rõ ràng (!) Vào 'không gian tên rỗng': <Bar xmlns="">
. Tôi không thấy lý do tại sao một phần tử null-namespaced nên được mong đợi. Lược đồ xác định một không gian tên cho tất cả các phần tử và cho các <Foo>
-element các f2b
-namespace thực sự là dự kiến của validator. Nhưng ngay cả khi tôi đặt rõ ràng không gian tên trong định nghĩa kết nối <Bar>
như tôi đã làm ở trên, trình xác thực vẫn mong đợi xmlns=""
cho số Bar
. Tôi đã thử một số biến thể của lược đồ và tài liệu để tìm câu trả lời mà không có may mắn - và tôi không thể đoán tại sao địa ngục trong trường hợp đặc biệt này là không gian tên rỗng được mong đợi.
Bất kỳ gợi ý đánh giá cao ... Ekke
Cảm ơn câu trả lời rõ ràng - bạn hoàn toàn đúng. ekke – ekke