Có cách nào hợp lý để có các thành phần có kiểu đơn giản và cũng thuộc tính không?XSD: Thêm thuộc tính vào các yếu tố "đơn giản" được nhập mạnh mẽ
Được rồi, tôi có một lược đồ XSD trong đó có một triệu (er, trăm) yếu tố mà có thể trông như thế này:
<xsd:element name="DocumentDescription" type="xsd:string" />
<xsd:element name="DocumentDateTime" type="xsd:dateTime" />
<xsd:element name="DocumentSize" type="xsd:int" />
Đó là dandy. Tuy nhiên, tôi thực sự muốn tất cả các yếu tố này cũng có một số thuộc tính phổ biến trên chúng như, giả sử, "định dạng" và "isVisible". tức là có một schema như:
<DocumentDescription isVisible="true">doc description</DocumentDescription>
<DocumentDateTime format="dd/mm/yyyy" isVisible="true">1/1/2008</DocumentDescription>
<DocumentSize format="0.00 KB" isVisible="false">5403</DocumentSize>
tôi có thể làm điều đó bằng tay, và khủng khiếp, bằng cách thêm tất cả các thuộc tính đó cho XSD khi tôi tạo ra nó, một cái gì đó như thế này:
<xsd:element name="DocumentDescription" />
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="format" type="xsd:string" />
<xsd:attribute name="isVisible" type="xsd:boolean" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="DocumentDateTime" />
... etc
... nhưng trong một thế giới lý tưởng tôi thà xác định nó như là một complexType:
<xsd:complexType name="customType">
<xsd:complexContent>
<xsd:extension base="???">
<xsd:attribute name="format" type="xsd:string" />
<xsd:attribute name="isVisible" type="xsd:boolean" />
... có nghĩa là tôi chỉ có thể làm:
<xsd:element name="DocumentDescription" type="customType" baseType="xsd:string" />
<xsd:element name="DocumentDateTime" type="customType" baseType="xsd:dateTime" />
<xsd:element name="DocumentSize" type="customType" baseType="xsd:int" />
Vấn đề với tôi mã "thế giới lý tưởng" là:
a) Tôi đã không hợp lệ <xsd:extension base-"???"
>, vì thực sự tôi không quan tâm những gì tôi đang mở rộng; Tôi muốn mở rộng tất cả các loại. Có vẻ như "xsd: anyType" là thích hợp, nhưng sau đó phần tử trở thành một container được đánh máy yếu không?
b) Tôi không còn có thể chỉ định loại đơn giản trên <xsd:element
>, vì bây giờ loại này là "customType" phức tạp mà tôi đã xác định. Do đó, thuộc tính "baseType" tưởng tượng mà tôi đặt ở đó ...
Vì vậy, tôi có thể thêm thuộc tính vào các loại đơn giản theo cách không clunky? Hoặc tôi có cần phải xác định một tá các loại phức hợp giống hệt nhau ngoại trừ loại đơn giản mà chúng mở rộng không?
Các yếu tố được đánh máy không chỉ mô tả dữ liệu hợp lý hơn, mà khi tôi sử dụng chúng để lập bản đồ XML trong Excel (và đây là toàn bộ mục đích đằng sau những thứ này). dựa trên loại.
Tôi có thể đang xem xét mọi thứ sai trái! Bất kỳ lời khuyên nào được đánh giá cao.
Tôi đã hủy một phiên bản đổi tên tất cả các lần xuất hiện của _strongly-type_ với _built-in simple types_ ([W3C wording] (http: //www.w3 .org/TR/2004/REC-xmlschema-0-20041028/primer.html # simpleTypesTable)). Một từ ngữ như vậy sẽ giúp tôi tìm ra câu hỏi của bạn. Bây giờ tôi không chắc rằng bản chỉnh sửa là xứng đáng và tôi hài lòng với nhận xét của tôi bao gồm từ ngữ này, vì vậy tôi có thể tìm thấy câu hỏi của bạn một lần nữa trong tương lai. – Alberto