2009-06-26 31 views
6

Tôi đang xác định XSD. Tôi cần phải xác định một yếu tố có ngày theo định dạng yyyymmdd. Làm thế nào tôi có thể xác định một hạn chế trong XSD để chỉ chấp nhận định dạng này?Định dạng ngày XSD ghi đè

Trả lời

9

Bạn luôn có thể định nghĩa nó như là một kiểu đơn giản hạn chế dựa trên một chuỗi, bị hạn chế bởi một biểu thức chính quy:

<xs:simpleType name="FormattedDateType"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="\d{8}"/> 
    </xs:restriction> 
</xs:simpleType> 

Nếu bạn muốn nhận được sự thông minh, bạn có thể tinh chỉnh các biểu thức chính quy để được thậm chí nhiều hơn của một trận đấu cho một ngày (ví dụ có chứa các thông tin trong tháng đó chỉ có thể là 01-12 và vân vân):

<xs:simpleType name="FormattedDateType"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])"/> 
    </xs:restriction> 
</xs:simpleType> 

Marc

+0

Marc Tôi biết biểu thức này nhưng tôi nghĩ nó không đúng cách. Tôi nghĩ rằng tôi cần phải mở rộng xs: ngày và ghi đè lên các định dạng. –

+0

Hoàn toàn trung thực, tôi chưa bao giờ nghĩ đến việc hạn chế xs: date hoặc xs: dateTime, và thiết lập một mẫu - không chắc chắn nó có hoạt động hay không - hãy thử nó! –

+3

Bạn không thể mở rộng một loại đơn giản (không phải thông qua xs: extension) và bạn không thể hạn chế một cái gì đó không hợp lệ như một phần của cơ sở. Ngày 'yyyymmdd' được định dạng không phải là ngày xs: hợp lệ (nó yêu cầu định dạng 'yyyy-mm-dd') vì vậy bạn cần một cái gì đó giống như giải pháp marc_s ' –

-2

Nếu bạn muốn định dạng MM/DD/YY YY trong xml thì mã này có thể giúp bạn cho định dạng này

<xs:element name="StartDate"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"/> 
    <xs:length value="10"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:element> 
+0

\t \t \t \t \t \t \t \t

+0

cố gắng chạy –

+0

@SamirVasani này, tôi không nghĩ rằng lược đồ XML hỗ trợ các phần tử neo như^và $ khi đối sánh mẫu. Bạn đã thử nghiệm đề xuất của mình chưa? –