Create DTD for node with inner xml node and text

2020-04-21 07:34发布

问题:

I have pretty simple XML shown below.

<?xml version="1.0" ?>
<message>
This is a message with some <bold>highlights</bold> in a text.
</message>

How can I create DTD to validate things inside message element? A mixture of node and text. This does not work.

<!DOCTYPE message [
  <!ELEMENT message (#PCDATA, bold)>
  <!ELEMENT bold (#PCDATA)>
]>

回答1:

When you have mixed content (both elements and text), you can't specify order (use | instead of ,) and it has to be zero or more occurrences (*).

Example:

<!DOCTYPE message [
<!ELEMENT message (#PCDATA|bold)*>
<!ELEMENT bold (#PCDATA)>
]>
<message>
    This is a message with some <bold>highlights</bold> in a text.
</message>


标签: xml dtd