2009-05-19 21 views
5

Lược đồ XML chỉ định "các chỉ báo xuất hiện" (maxOccurrence, minOccurrence). Có một "thực hành tốt nhất" trong đó các phần tử (xsd: phần tử, xsd: chuỗi hoặc xsd: tất cả) các chỉ số này nên được sử dụng không?Cách sử dụng các chỉ số xuất hiện XSD

Ví dụ:

hoặc

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="X" type="xsd:token" minOccurs="1" maxOccurs="unbounded" /> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

hoặc

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence minOccurs="1" maxOccurs="unbounded"> 
      <xsd:element name="X" type="xsd:token" /> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

Tôi muốn đến tại địa chỉ:

 

<XList> 
    <X>First</X> 
    <X>Second</X> 
    <X>Third</X> 
    <X>Fourth</X> 
    <X>Fifth</X> 
... 
</XList> 
 

Trả lời

6

Tôi đã tự tìm ra.

Sự khác biệt giữa các ví dụ của tôi không rõ ràng ngay từ cái nhìn đầu tiên, nhưng nếu ví dụ này phức tạp hơn một chút thì nó sẽ có ý nghĩa.

Việc gia hạn sau đây làm rõ sự khác biệt:

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="1" maxOccurs="1"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="1"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

dẫn đến

 

<XList> 
    <X>Only X</X> 
    <Y>Only Y</Y> 
</XList> 
 

trong khi

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

dẫn đến

 

<XList> 
    <X>First X</X> 
    <X>Second X</X> 
    <X>Third X</X> 
    ... 
    <Y>First Y</Y> 
    <Y>Second Y</Y> 
    ... 
</XList> 
 

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence minOccurs="1" maxOccurs="unbounded" > 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="2" maxOccurs="2"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="1"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

dẫn đến

 

<XList> 
    <X>First X</X> 
    <X>Second X</X> 
    <Y>First Y</Y> 
    <X>Third X</X> 
    <X>Fourth X</X> 
    <Y>Second Y</Y> 
    ... 
</XList> 
 

 

<xsd:element name="XList"> 
    <xsd:complexType> 
     <xsd:sequence minOccurs="1" maxOccurs="unbounded" > 
      <xsd:element name="X" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
      <xsd:element name="Y" type="xsd:token" 
         minOccurs="1" maxOccurs="unbounded"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
 

dẫn đến

 

<XList> 
    <X>First X</X> 
    <X>Second X</X> 
    <X>Third X</X> 
    ... 
    <Y>First Y</Y> 
    <Y>Second Y</Y> 
    ... 
    <X>Fourth X</X> 
    <X>Fifth X</X> 
    <X>Sixth X</X> 
    ... 
    <Y>Third Y</Y> 
    <Y>Fourth Y</Y> 
    ... 
</XList> 
 
0

Nếu chuỗi của bạn chỉ chứa một đứa trẻ, tôi cho rằng nó không tạo ra nhiều hiệu quả khác biệt. Mặc dù vậy, tôi sẽ đặt nó trên phần tử xsd: đó là nơi tôi thường đặt chúng nếu có nhiều hơn một phần tử trong chuỗi.

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