我的.xml结构可能包含以下数据:
<entry id="one-string">
<class>nmWinMultiReports_main</class>
<classParams>string</classParams>
</entry>
<entry id="multiple-elements">
<class>nmJavaScript_main</class>
<classParams>
<pluginid>monitorPlugin</pluginid>
<bla>string</bla>
<tag>abc</tag>
</classParams>
</entry>
如何定义.dtd文件以允许classParams
为1.是字符串还是2.多个子元素(每个元素一次)?
我试过了:
<!ELEMENT class ( #PCDATA ) > <!ELEMENT classParams ( #PCDATA | pluginid | bla | tag ) > <!ELEMENT pluginid ( #PCDATA ) > <!ELEMENT bla ( #PCDATA ) > <!ELEMENT tag ( #PCDATA ) >
答案 0 :(得分:2)
DTD无法强制执行您描述的约束;得到类似约束的最简单方法是添加一个新元素(称之为string
)并将classParams声明为string
或pluginid
等序列作为子元素:< / p>
<!ELEMENT string (#PCDATA) >
<!ELEMENT classParams (string
| (pluginid, bla, tag))
>
或者,如果
<classParams><string>foo</string></classParams>
似乎过于沉重,您可以将entry
声明为将classParams
或classParamString
作为内容:
<!ELEMENT entry (class, (classParams | classParamString)) >
<!ELEMENT classParamString (#PCDATA) >
<!ELEMENT classParams (pluginid, bla, tag) >
答案 1 :(得分:1)
我做到了:
<!ELEMENT classParams ( #PCDATA | pluginid | bla | tag )* >
答案 2 :(得分:0)
你也可以通过这种方式实现它:
<!ELEMENT classParams ANY>