2011-07-18 27 views
1

考慮以下的正則表達式如何在Relax NG中定義自己的類型?

pattern = "(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d" 

這pattertn表示MM/DD/YYYY格式的日期字符串。現在,如果我想創建幾個這種類型的attribues,我可以明顯地寫他們喜歡:

element holiday 
{ 
attribute beginDate 
{ 
    xs:string { pattern = "(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d" } 
} 
attribute endDate 
{ 
    xs:string { pattern = "(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d" } 
} 
} 

但是,這是非常不方便,每次寫圖案化線時,我想定義這種格式的日期。我想定義我自己的類型,例如MyDateFormat,並在必要時使用它作爲attribute someDate { MyDateFormat }而不是多次重寫相同的代碼,但我找不到使用Relax NG compact syntax來定義自己類型的方法。我的問題是如何實現這種行爲並避免代碼重寫兩次。

任何幫助將不勝感激。提前致謝。

回答

1

實測出的一個解決方案:

element holiday 
{ 
attribute beginDate { MMDDYYYY } 
attribute endDate { MMDDYYYY } 
} 
:新型可以定義爲

MMDDYYYY = xs:string { pattern = "(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d" } 

,然後在必要時使用它

相關問題