RELAX-NG (读音是“relaxing”)也是一种XML schema定义语言。
RELAX-NG schema 定义了xml文档的结构和内容。而RELAX-NG schema本身是xml文档。
下面通过翻译小段来简单了解一下RELAX-NG。
以邮件地址通讯录addressBook的表述为例,xml 如下:
<addressBook>
<card>
<name>John Smith</name>
<email>js@example.com</email>
</card>
<card>
<name>Fred Bloggs</name>
<email>fb@example.net</email>
</card>
</addressBook>
DTD表述如下:
<!DOCTYPE addressBook [ <!ELEMENT addressBook (card*)> <!ELEMENT card (name, email)> <!ELEMENT name (#PCDATA)> <!ELEMENT email (#PCDATA)> ]>
而RELAX NG模式的表述为::
<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
<zeroOrMore>
<element name="card">
<element name="name">
<text/>
</element>
<element name="email">
<text/>
</element>
</element>
</zeroOrMore>
</element>
如果addressBook要求不能为空, 我们可以使用 oneOrMore来替换 zeroOrMore:
<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
<oneOrMore>
<element name="card">
<element name="name">
<text/>
</element>
<element name="email">
<text/>
</element>
</element>
</oneOrMore>
</element>
现在我们做些改变,让每个card 具有可选元素 note:
<element name="addressBook" xmlns="http://relaxng.org/ns/structure/1.0">
<zeroOrMore>
<element name="card">
<element name="name">
<text/>
</element>
<element name="email">
<text/>
</element>
<optional>
<element name="note">
<text/>
</element>
</optional>
</element>
</zeroOrMore>
</element>
注意<text/> 模式 匹配任意文本, 包括空文本。 但是分离标签的空白符不考虑.待续
465

被折叠的 条评论
为什么被折叠?



