如何定义属性到可选元素?

时间:2012-09-04 11:23:29

标签: xml parsing dtd

我的XML可能包含多个param条目,每个条目都有keyvalue属性,如下所示:

<entry id="entry1">
    <classParams>
       <param key="pluginid" value="monitorPlugin" />
       <param key="pluginid2" value="monitorPlugin2" />
    </classParams>
</entry>

和/或一个classParams只包含一个这样的字符串:

<entry id="entry2">
    <classParams>
      Im a string
    </classParams>
</entry>

我的DTD:

<!ELEMENT classParams ( #PCDATA | param* )* >
<!ATTLIST id CDATA #REQUIRED value CDATA #REQUIRED >
<!ELEMENT param ( #PCDATA ) >

如何正确定义我的DTD,关于两种条目类型和仅一种类型的属性定义?

2 个答案:

答案 0 :(得分:1)

这个DTD应该有用......

<!ELEMENT entry (classParams)>
<!ATTLIST entry
          id CDATA #REQUIRED>

<!ELEMENT classParams (#PCDATA|param)*>

<!ELEMENT param (#PCDATA)>
<!ATTLIST param
          key CDATA #REQUIRED
          value CDATA #REQUIRED>

答案 1 :(得分:0)

我用这个定义做了。我现在只使用id并将值放在param中。

<!ELEMENT classParams ( #PCDATA  | param )* >
         <!ELEMENT param ( #PCDATA ) >
         <!ATTLIST param 
            id CDATA #REQUIRED
         >