放松Ng列表patterncomma分开

时间:2016-12-19 13:22:23

标签: xml relaxng

我正在使用Relax Ng来验证XML文件

在我的XML文件中,我有一个标记,其中有几个以逗号分隔的值

<mytage>01,02,03,04<mytage>

我可以在.rng文件中使用<List>模式,但它匹配以逗号分隔的空格分隔的序列

1 个答案:

答案 0 :(得分:1)

可以使用带有正则表达式的<param name="pattern">指定;例如:

<data type="string" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <param name="pattern">[0-9][0-9](,[0-9][0-9])*</param>
</data>

或者在紧凑语法中:

xsd:string {
    pattern = "[0-9][0-9](,[0-9][0-9])*"
}

如果您想让它成为<choice>

的一部分
<choice>
    <data type="string" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
      <param name="pattern">[0-9][0-9](,[0-9][0-9])*</param>
    </data>
    <data type="string" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
      <param name="pattern">…</param>
    </data>
</choice>

或者在紧凑语法中:

(    xsd:string {
        pattern = "[0-9][0-9](,[0-9][0-9])*"
    }
|   xsd:string {
        pattern = "…"
    }
)