Tôi đang tạo dịch vụ thay đổi dữ liệu mới tại công ty của mình. Chúng tôi muốn mở rộng một đối tượng hiện có được định nghĩa trong tệp định nghĩa core.xsd của chúng tôi. Dưới đây là ví dụ về những gì tôi cần làm:Cách ghi đè phần tử Xsd bên trong phần tử cha/mở rộng
<xs:complexType name="parentType">
<xs:sequence>
<xs:element name="departmentName" type="core:DEPARTMENT_NAME"
minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="childType">
<xs:complexContent>
<xs:extension base="parentType">
<xs:sequence>
<xs:element name="departmentName"
type="core:DEPARTMENT_NAME"
minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Tôi nghĩ điều này có ý nghĩa hoàn hảo. Tôi muốn ghi đè lên phần tử cha và làm cho nó bắt buộc. Tuy nhiên, một tệp xml hợp lệ sẽ là cái này. Bây giờ có một tên bộ phận phụ ở đâu?
<childType>
<departmentName>HR</departmentName>
<departmentName>IT</departmentName>
</childType>
Làm thế nào tôi có thể làm điều này để các tập tin XML sẽ trở thành:
<childType>
<departmentName>IT</departmentName>
</childType>
Cảm ơn, Craig
Cảm ơn Petru, đó là những gì tôi đang tìm kiếm. Câu hỏi mặc dù: Điều gì sẽ xảy ra nếu tôi vẫn muốn mở rộng parentType? Giả sử tôi muốn thêm một số trường bị thiếu vào loại mở rộng nó. Tôi nhận thấy rằng bạn chỉ có thể giới hạn hoặc mở rộng, nhưng không được cho cả hai đối với một parentType. Tôi sẽ thử nghiệm, nhưng tôi có cần phải tạo một kiểu GrandChild mở rộng childType, có các hạn chế trên parentType không? Điều đó có vẻ quá chi tiết và rườm rà là không có một giải pháp sạch hơn? – Craig
Để xây dựng trên đầu trang của childType bạn sẽ phải tạo grandchildType. Tôi đồng ý rằng nó có vẻ cồng kềnh - bảo trì của xsd: hạn chế đặc biệt .. nhưng đó là XSD 1.0. Đối với vòng loại "sạch hơn" ... Đó là chi tiết thực sự, và con mắt của khán giả. Nếu đây là một thiết kế mới, tôi chắc chắn rằng có nhiều cách khác nhau để bố trí hệ thống phân cấp của bạn sao cho nó mang lại cho bạn điều gì đó hợp lý ... Bạn cũng phải suy nghĩ về XSD để mã hóa các ràng buộc ... –