2010-06-21 52 views
5

Tôi đang cố tạo một trình soạn thảo xml đơn giản cho một số nhu cầu cơ bản nhưng cụ thể, điều tôi không chắc chắn cách xử lý là tôi muốn có thể có tùy chỉnh riêng các thuộc tính (hoặc một cái gì đó) trong chính xsd-schema.Thuộc tính tùy chỉnh trong sơ đồ xsd

Something như thế này là những gì tôi đã có trong tâm trí:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="Book"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="Author" type="xsd:string" listable="1" /> 
      <xsd:element name="Pages" type="xsd:int" /> 
     </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

Nơi tôi muốn thông tin về việc liệu các phần tử là 'listable' hay không trong lược đồ (lưu ý rằng các tập tin .xml không có thông tin hoặc đầu mối xem liệu phần tử đó có thể được liệt kê hay không, thuộc tính có thể liệt kê chỉ là một cách để sắp xếp các phần tử trong trình chỉnh sửa).

Nó không cần phải là thuộc tính riêng của nó. Nếu có một thuộc tính misc hoặc cái gì đó mà tôi có thể chơi với điều đó sẽ ổn thôi. Vấn đề chỉ là giản đồ trên không xác thực (thuộc tính 'có thể liệt kê' không được hỗ trợ trong ngữ cảnh này.)

Có cách nào để lưu trữ loại thông tin này trong lược đồ không?

Có vẻ như có thể tạo không gian tên mới nhưng tôi không biết cách đặt tên miền đó sao cho bất kỳ thành phần nào có thể có thuộc tính đặc biệt trong xsd (tôi muốn tránh làm rối xml tệp cho điều này). Và có vẻ hơi quá mức cần thiết để tạo ra một không gian tên mới chỉ cho điều này?

Hoặc tôi đang đi về điều này một cách sai lầm hoàn toàn?

Trả lời

5

Thông tin này phải nằm trong không gian tên riêng của nó. Nơi tốt nhất để lưu trữ nó sẽ nằm trong chú thích trên thuộc tính. Bạn có thể đính kèm chú thích vào bất kỳ mục lược đồ nào và chúng có thể chứa các phần tử xsd: documentation, được thiết kế cho tài liệu có thể đọc được của con người và xsd: appinfo, được chỉ định cho thông tin có thể xử lý bằng máy. Vì vậy, ví dụ của bạn sẽ trông giống như:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:foo="http://www.example.org/bar"> 
    <xsd:element name="Book"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="Author" type="xsd:string" > 
     <xsd:annotation> 
      <xsd:appinfo> 
       <foo:listable value="true"/> 
      </xsd:appinfo> 
     </xsd:annotation> 
      </xsd:element> 
      <xsd:element name="Pages" type="xsd:int" /> 
     </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 
+0

Cảm ơn! Dường như chính xác những gì tôi cần. – Magnus

+0

@Aled G: Tôi nên làm gì nếu tôi muốn một phần tử cụ thể trong tài liệu xml có một không gian tên cụ thể. Phần còn lại của các phần tử không chứa bất kỳ khai báo không gian tên nào. Trong trường hợp này, tôi nên viết lược đồ như thế nào? – Ashwin

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