2010-11-05 42 views

Trả lời

10

Trong nhiều chi tiết như chúng được hiển thị, hai ví dụ của bạn giống nhau về mặt ngữ nghĩa.

Đó là một sự hiểu lầm phổ biến của XML trong một tài liệu XML đúng ngữ pháp, thứ tự của các phần tử anh chị em là quan trọng. Các XML 1.0 spec xác định rằng các thuộc tính là không có thứ tự, tuy nhiên nó không nói gì về các yếu tố. Do đó một bộ xử lý XML được tự do báo cáo các phần tử anh chị em theo bất kỳ thứ tự nào nó thích.

Điều đó nói rằng, tôi không nghĩ rằng bất kỳ bộ xử lý XML thường được sử dụng nào báo cáo các phần tử theo thứ tự khác với thứ tự chúng xuất hiện trong tài liệu.

Bạn hỏi về tài liệu 'hợp lệ' - điều này ngụ ý rằng DTD hoặc lược đồ đang được sử dụng và do đó có thể (hoặc có thể không) là trường hợp đơn đặt hàng có liên quan. Có các cơ chế cho một DTD hoặc lược đồ để xác định thứ tự phần tử đó có liên quan trong một tài liệu. Tuy nhiên, các ví dụ của bạn không hiển thị việc sử dụng DTD hoặc lược đồ.

+0

Trong thực tế, có một DTD. Cảm ơn. – Segolas

+0

"Đó là một sự hiểu lầm phổ biến của XML trong một tài liệu XML được định dạng tốt, thứ tự của các phần tử là quan trọng." Không có sự hiểu lầm. Xem 3.2.1. Tất nhiên, một bộ xử lý XML có thể có khả năng xử lý ràng buộc trình tự và vẫn trả về các phần tử theo một thứ tự khác. Nó có thể rot13 tất cả các nút văn bản, quá. –

+0

@Robert Rossney - Tôi đã chỉnh sửa để thay đổi thành "các phần tử anh chị em", tuy nhiên, tôi không thấy sự liên quan của 3.2.1 để sắp xếp các phần tử anh chị em trong một tài liệu được tạo đúng. Bạn có thể xây dựng? – philhobgen

1

Tùy thuộc vào DTD (hoặc lược đồ) của định nghĩa ngôn ngữ của bạn.

1

Điều đó phụ thuộc vào việc tiêu thụ XML là gì. Thứ tự của các phần tử có thể không quan trọng về mặt tài liệu XML được hình thành tốt (tùy thuộc vào XSD), nhưng một số chương trình/API nhất định sẽ đọc XML theo thứ tự bảng chữ cái (chẳng hạn như DataContractSerializer trong .NET).

Ngoài ra, thứ tự có thể có ý nghĩa ngữ nghĩa (ví dụ: nếu XML đại diện cho một tài liệu, thứ tự là rất quan trọng).

+3

Tôi muốn phân biệt giữa * hợp lệ * (tức là tuân theo một số DTD/lược đồ) và * được định dạng đúng * (nghĩa là XML hợp pháp cú pháp) rõ ràng hơn. Ngay bây giờ tôi sẽ bị cám dỗ để nói rằng đối số này là không chính xác do cách nó sử dụng từ "hợp lệ". –

+0

@Andrzej - điểm tốt. Tôi đã cập nhật câu trả lời của mình để sử dụng đúng hình thức thay vì hợp lệ. – RQDQ

+1

Thứ tự của các yếu tố sẽ * không bao giờ * là quan trọng trong điều khoản của nó được hình thành tốt và XSDs không có gì để làm với ness cũng hình thành. – Quentin

0

XML duy trì thứ tự tài liệu - chúng được coi là hai tài liệu khác nhau.

Ứng dụng của bạn có thể hoặc không thể xem xét thứ tự các yếu tố quan trọng. Ví dụ, thứ tự của các phần tử là rất cần thiết trong XHTML. Nếu bạn đang xác nhận hợp lệ đối với một Giản đồ hoặc tương tự, nó phụ thuộc vào lược đồ có hay không cả hai tài liệu đều hợp lệ.

Lưu ý rằng thứ tự các thuộc tính không quan trọng tuy nhiên (các tài liệu XML chỉ khác nhau theo thứ tự các thuộc tính trên các phần tử được coi là giống nhau).

4

Điều này không quan trọng đối với chính XML. Cả hai tài liệu là tất nhiên cũng được hình thành tài liệu XML. Tuy nhiên, chúng có thể không phải là hợp lệ; khi xác nhận hợp lệ với một Lược đồ XML, có thể chỉ định một đơn đặt hàng và không cung cấp các phần tử theo thứ tự đó sẽ làm cho tài liệu không hợp lệ theo lược đồ. Điều này có thể được thực hiện với phần tử xsd:sequence như được mô tả here

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