仍在学习 RELAX NG(想知道我是否应该学习 XSD),我的元素层次结构基本正确,所以我正在研究内容:
一个元素(
Unit
)使用枚举类型(一组固定的字符串),像这样
字节|千字节 |兆字节 |技嘉|太字节
所以我想在RELAX NG中定义相应的类型,但无法应用
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
中的规则。
到目前为止我有这个:
<define name="DT.Unit">
<a:documentation>Data Type Unit: A fixed set of strings</a:documentation>
<data datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
type="normalizedString">
<!-- how to define the set of strings allowed? -->
</data>
</define>
我应该使用
pattern
,还是可以用其他方式枚举字符串?
我不知道如何将 XSD 定义应用于 RELAX NG。
由于问题在一周内没有答案,并且被否决而没有任何评论,我尝试自己找出答案:
看起来
<data datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" type="normalizedString">
并不会阻止您通过<param name="value">
添加单个值,这意味着XSD的<enumeration value='--01-01'>
在RELAX NG中似乎表示为<param value='--01-01'>
。
当我尝试时,它被接受了:
<define name="DT.Size">
<a:documentation>Data Type Size: A fixed set of strings</a:documentation>
<data datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
type="normalizedString">
<param name="value">Byte</param>
<param name="value">KiloByte</param>
<param name="value">MegaByte</param>
<param name="value">GigaByte</param>
<param name="value">TeraByte</param>
</data>
</define>