我有一个.RNC文件,我在其中定义了所有XML元素,这些元素由relax ng
编译成XSD。
我有几个共享许多属性的元素,并且维护变得混乱...因此我想通过使用/模拟某种继承来集中这些信息。
假设我定义了一个这样的元素:
person = element PERSON {
attribute name { text },
attribute city { text }
}
现在我想扩展,例如:
employee = element EMPLOYEE extends PERSON {
attribute company { text }
}
这可能吗?怎么样?提前谢谢。
答案 0 :(得分:0)
在Relax NG中没有扩展元素的概念。但您可以在多个位置使用定义。例如,以下模式定义了personLike
结构(即“类似人”的结构)。然后,此personLike
定义用于PERSON
元素和EMPLOYEE
元素。
start = (person | employee)+
personLike =
attribute name { text },
attribute city { text }
person = element PERSON {
personLike
}
employee = element EMPLOYEE {
personLike,
attribute company { text }
}