Relax NG:命名空间、名称类及与其他模式语言的比较
1. Relax NG 中的命名空间和名称类
1.1 命名空间
在 Relax NG 中,命名空间的处理较为直接。与 XML Schema 不同,命名空间在 XML Schema 中用于标识模式,而在 Relax NG 中并非核心角色。在单个模式中可以使用多个命名空间,每个元素和属性定义都可以配备单独的命名空间规范,通过 ns 属性实现,示例如下:
<element name="style" ns="http://www.jazz.org">
</element>
并非每个元素定义都必须提供命名空间属性。若未指定,元素的命名空间默认为最近祖先元素的命名空间;若不存在这样的祖先元素,命名空间默认为空字符串。也可以显式指定空字符串,如 ns="" 会用默认命名空间覆盖现有的命名空间定义。
对于属性,情况有所不同。若未为属性指定命名空间属性,其命名空间默认为空字符串,这是因为 XML 命名空间建议未将默认命名空间应用于属性。不过,可以通过将属性名称指定为名称类,使属性的默认行为与元素相同,示例如下:
<attribute>
<name>duration</name>
</attribute>
像 <name> 、
超级会员免费看
订阅专栏 解锁全文
33

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



