2010-01-26 42 views
13

Ứng dụng tôi làm việc trên có đầu ra XML phù hợp với lược đồ XSD. Khi các tính năng được thêm vào ứng dụng, các thay đổi của XSD và tôi muốn lưu ý phiên bản của lược đồ trong tệp XSD.Nơi để thêm phiên bản vào lược đồ XSD?

Có lẽ tôi đang thiếu thứ gì đó, nhưng tôi chưa tìm được cách tích hợp để đánh dấu phiên bản của lược đồ.

Bạn làm như thế nào?

+1

Tại sao không xác định phiên bản vào tên tập tin XSD? ví dụ. myschema1.0.xsd – Karussell

+0

Đây thực sự là một ý tưởng tuyệt vời. – gooli

+1

Sao chép [Thực tiễn tốt nhất cho phiên bản lược đồ XML là gì?] (Http://stackoverflow.com/q/2014237/991816) – DanSkeel

Trả lời

16

Bạn có thể sử dụng không gian tên của tài liệu XSD của bạn

<xs:schema targetNamespace="http://yourcompany/yourapp/1.0" ... > 
    ... 
</xs:schema> 

Ví dụ nhìn vào xsd của định nghĩa bởi w3.org, đây là cách họ làm đi. Lưu ý rằng thay đổi số phiên bản ở đây thường theo định nghĩa là thay đổi đột phá đối với bất kỳ người tiêu dùng nào của xsd của bạn (cho dù sự thay đổi thực tế nhỏ đến mức nào).

Đối với phiên bản ít tác động vào, có vẻ là một thỏa thuận về việc đặt một thuộc tính phiên bản tại phần tử gốc của bạn:

<xs:schema version="1.0.0" ...> 
    ... 
</xs:schema> 
+2

Tôi nghĩ đây là giải pháp thích hợp khi thay đổi phiên bản chính. Tuy nhiên, nó không tốt như vậy nếu bạn muốn thực hiện một sửa đổi hoặc lặp lại phát triển mới, bởi vì các tài liệu al XML sẽ phải được di chuyển đến một không gian tên mới. Thuộc tính phiên bản của phần tử lược đồ như tôi chỉ ra trong trường hợp của tôi có vẻ thích hợp hơn cho những trường hợp IMO đó. –

+0

Câu trả lời không hợp lệ. Xem [khuyến nghị] (http://stackoverflow.com/questions/2014237/what-are-the-best-practices-for-versioning-xml-schemas). Ngoài ra, bạn có thể thử [this] (http://www.xfront.com/SchemaVersioning.html) – DanSkeel

+5

Từ [xml-google-styleguide] (http://google-styleguide.googlecode.com/svn/trunk/xmlstyle .html): 'Không gian tên PHẢI KHÔNG được thay đổi trừ khi ngữ nghĩa của các phần tử hoặc thuộc tính cụ thể đã thay đổi theo những cách không tương thích mạnh. [Lý do: Thay đổi không gian tên yêu cầu thay đổi tất cả mã máy khách.] ' – DanSkeel

7

Theo schema yếu tố chính nó có một thuộc tính version:

<schema 
    attributeFormDefault = (qualified | unqualified) : unqualified 
    blockDefault = (#all | List of (extension | restriction | substitution)) : '' 
    elementFormDefault = (qualified | unqualified) : unqualified 
    finalDefault = (#all | List of (extension | restriction | list | union)) : '' 
    id = ID 
    targetNamespace = anyURI 
    version = token 
    xml:lang = language 
    {any attributes with non-schema namespace . . .}> 
    Content: ((include | import | redefine | annotation)*, (((simpleType | complexType | group | attributeGroup) | element | attribute | notation), annotation*)*) 
</schema> 

Xem http://www.w3.org/TR/xmlschema-1/#key-schema, "Đại diện 3.15.2 XML Schemas"

Tuy nhiên, nếu bạn xuất bản các lược đồ, sau đó tôi nghĩ rằng cách tốt nhất để giải quyết nó là sử dụng không gian tên đích. Điều này sẽ thực thi các phiên bản đúng đang được sử dụng (nhưng phá vỡ khả năng tương thích)

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