2

私の.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>

classParams1.文字列または2.複数のサブ要素(それぞれ1回)のいずれかを許可するように.dtdファイルを定義するにはどうすればよいですか?

私は試した:

<!ELEMENT class ( #PCDATA ) >
<!ELEMENT classParams ( #PCDATA | pluginid | bla | tag ) >
         <!ELEMENT pluginid ( #PCDATA ) >
         <!ELEMENT bla ( #PCDATA ) >
         <!ELEMENT tag ( #PCDATA ) >
4

3 に答える 3

2

DTDは、あなたが説明する制約を強制することはできません。その制約のようなものを取得する最も簡単な方法は、新しい要素を追加し(それを呼び出すstring)、classParamsを子として次stringのいずれかまたはシーケンスpluginidなどをとることとして宣言することです。

<!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) >
于 2012-09-09T18:29:43.247 に答える
1

やった:

<!ELEMENT classParams ( #PCDATA | pluginid | bla | tag )* >
于 2012-09-04T12:11:25.767 に答える
0

この方法でもそれを達成できます:

<!ELEMENT classParams ANY>
于 2015-05-01T12:30:40.493 に答える