2010-01-19 27 views
5

Tôi đang cố gắng mở rộng và điều chỉnh giản đồ xsd bên ngoài (của tiêu chuẩn fixml). Tôi cần phải thay đổi kiểu dữ liệu của một số phần tử, mà không cần chạm vào lược đồ gốc, nhưng bằng cách xác định lại nó; nhưng đã tìm thấy nó quá cồng kềnh.XSD: Cách xác định lại kiểu dữ liệu của một simpleType ví dụ. từ xs: string to xs: integer

gì tồn tại:

lĩnh vực-base.xsd

<xs:simpleType name="LastUpdateTime_t"> 
      <xs:restriction base="UTCTimestamp"> 
<xs:simpleType> 

những gì tôi muốn nó trở thành:

<xs:simpleType name="LastUpdateTime_t"> 
      <xs:restriction base="xs:string"> 
<xs:simpleType> 

Những gì tôi đã cố gắng (nhưng thất bại):

<xs:redefine schemaLocation="fields-base.xsd"> 
      <xs:simpleType name="LastUpdateTime_t"> 
       <xs:restriction base="xs:string" /> 
      </xs:simpleType> 
</xs:redefine> 

Sách và không có mạng lưới eem đã giúp quá nhiều một trong hai, vì vậy tôi bắt đầu đặt câu hỏi nếu điều này là về mặt lý thuyết có thể ở tất cả.

Trả lời

4

Theo như tôi có thể nói điều này là không thể.

Các Định nghĩa lại duy nhất tôi có thể làm cho validate trong XMLSpy là:

<xs:redefine schemaLocation="fields-base.xsd"> 
     <xs:simpleType name="LastUpdateTime_t"> 
      <xs:restriction base="LastUpdateTime_t" /> 
     </xs:simpleType> 
</xs:redefine> 

Đó là, những hạn chế mới phải căn cứ vào những hạn chế cơ bản.

Có thể XMLSpy không đúng về điều này.

này trích dẫn hơi khó hiểu từ W3C XML Schema definition:

Trong [con], mỗi simpleType phải có một trong nó [con] và mỗi complexType phải có một hạn chế hoặc gia hạn trong của nó grand- [children] giá trị thực tế · của có [thuộc tính] cơ sở phải là giống như · giá trị thực tế · của thuộc tính name riêng của nó cộng với không gian tên đích;

có thể nói về điều này (đó là một phần của thông số mà liên kết XMLSpy dành cho lỗi này).

Ví dụ duy nhất thực sự tốt về việc xác định lại các loại đơn giản mà tôi có thể tìm thấy là here. Trong ví dụ này, định nghĩa lại chỉ dành cho các liệt kê.

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