2015-04-18 10 views
5

Tôi muốn áp dụng một hạn chế cụ thể đối với Lược đồ XML (mà tôi có rất ít kinh nghiệm).Áp dụng hạn chế đối với thuộc tính thời gian trong Lược đồ XML

Tôi có một thuộc tính của xsd:time loại:

<xsd:attribute name="hour" type="xsd:time" use="required"/> 

Những gì tôi muốn đến là áp dụng một hạn chế để các XML sẽ chỉ có giá trị trên các khoảng thời gian nửa giờ. Ví dụ: 10:00, 12:30, 15:30, 20:00 sẽ là giá trị hợp lệ cho thuộc tính giờ nhưng 10:45, 11:12, 15:34 v.v.

Tôi làm cách nào để đạt được điều này? Tìm kiếm của tôi đã không đưa ra một cái gì đó hữu ích.

Cảm ơn bạn trước.

Trả lời

3

Bạn có thể xác định thời gian của mình theo cách này.

<xsd:attribute name="hour" type="Time" use="required"/> 

<xsd:simpleType name="Time"> 
    <xsd:restriction base="xsd:time"> 
     <xsd:enumeration value="00:00:00"/> 
     <xsd:enumeration value="00:30:00"/> 
     <xsd:enumeration value="01:00:00"/> 
     <xsd:enumeration value="01:30:00"/> 
     <xsd:enumeration value="02:00:00"/> 
     <xsd:enumeration value="02:30:00"/> 
     <xsd:enumeration value="03:00:00"/> 
     <xsd:enumeration value="03:30:00"/> 
     <!-- etc etc --> 
    </xsd:restriction> 
</xsd:simpleType> 

hoặc

<xsd:simpleType name="Time"> 
    <xsd:restriction base="xsd:time"> 
     <xsd:pattern value="((0[0-9]|1[0-9]|2[0-3]):[0|3][0]:[0][0])"/> 
    </xsd:restriction> 
</xsd:simpleType> 
+2

Giá trị của cơ sở nên được bắt đầu bằng XSD. Ngoài ra tôi nghĩ rằng bằng cách sử dụng regex đơn giản hơn nó vẫn sẽ làm việc '..: (0 | 3) 0: 00' – sergioFC

+0

Bạn có thể vui lòng cung cấp câu trả lời về điều này? Nó sẽ được tốt đẹp! :) –

+0

@sergioFC Tôi đã nghĩ đơn giản hóa biểu thức nhưng, giải pháp của bạn cho phép những giá trị này 24:00:00, 00: 00: 0, tôi nghĩ rằng đó là một chút mơ hồ. Dù sao cả hai giải pháp là đúng, và thiếu 'xs: time' lỗi của tôi :) – Xstian

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