如何声明多个元素的属性?
赞:
<!ATTLIST foo,bar createdAt CDATA #IMPLIED>
答案 0 :(得分:1)
通常的方法是定义一个参数实体,它实际上只是一个宏。此示例定义了两个参数实体,其中一个引用另一个:
Navigation.setRoot({
root: {
stack: {
options: {
topBar: {
visible: false
}
},
children: [
{
component: {
name: 'navigation.playground.TextScreen',
passProps: {
text: 'This is tab 1',
myFunction: () => 'Hello from a function!',
}
}
},
{
component: {
name: 'navigation.playground.TextScreen',
passProps: {
text: 'This is tab 2',
}
}
}
]
}
}
});
当专家这样做时,生成的DTD变得极其复杂,几乎对普通凡人都是不可读的,但是该功能非常强大。
答案 1 :(得分:1)
对于XML DTD,这只能使用迈克尔解释的参数实体(参见the XML spec)。 OTOH,SGML DTD允许以非常接近您所想的形式对多个元素进行属性列表声明:
<!-- only valid in SGML rather than XML DTDs: -->
<!ATTLIST (elem1|elem2|elem3) myatt CDATA #IMPLIED>
SGML还允许名称组代替其他标记声明中的单个名称。
此外,WebSGML(ISO 8879:1986 / Cor 2:1999)还允许#ALL
和#IMPLICIT
代替元素名称,以将声明应用于所有声明的或隐含的元素。这些已包含在WebSGML中,以表示通用XML属性,例如xml:base
,xml:lang
和xmlns
(但不包含xmlns:xyz
)。但是,就像 name group 语法一样,它们没有成为SGML的XML子集的一部分。