考虑以下正则表达式
pattern = "(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d"
此pattertn表示MM / DD / YYYY格式的日期字符串。现在,如果我想创建这种类型的几个属性,我显然可以写出:
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定义自己类型的方法。我的问题是如何实现这样的行为并避免代码重写两次。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
找到一个解决方案:新类型可以定义为
MMDDYYYY = xs:string { pattern = "(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d" }
然后在必要时使用它:
element holiday
{
attribute beginDate { MMDDYYYY }
attribute endDate { MMDDYYYY }
}