2

我有一个这样的 XML 文档:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE school SYSTEM ""> 
<school> 
    <data> 
        <id>
            <uid>1</uid> 
        </id>
        <information>
            <name>Michael</name>
            <surename>Julius</surename>
        </information>
        <note> 
            <test>hans</test>

        </note> 
    </data> 
</school> 

和一个 DTD 文件

<!ELEMENT school (data)> 
<!ELEMENT data (id,information,note)> 
<!ELEMENT id (uid)> 
<!ELEMENT uid (#PCDATA)>
<!ELEMENT information (name,surename?)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT surename (#PCDATA)> 
<!ELEMENT note (#PCDATA)>  <--- unknown element type

我想<note>用可选的元素类型定义元素,比如

<note> 
  <test2>test2</test2>
</note>

或者

<note>
  <unknown name></unknown name>
</note>

有什么帮助吗?谢谢

4

1 回答 1

2

您可以ANY在元素声明中使用note. 这将允许任何元素成为 的子note元素,但也必须定义该元素(具有元素声明)。你不能有一个未定义的元素。

示例note声明:

<!ELEMENT note ANY>

示例实例(DTD 可以是外部的,但我使用了内部子集,因为它更容易测试):

<!DOCTYPE school [
<!ELEMENT school (data)> 
<!ELEMENT data (id,information,note)> 
<!ELEMENT id (uid)> 
<!ELEMENT uid (#PCDATA)>
<!ELEMENT information (name,surename?)> 
<!ELEMENT name (#PCDATA)> 
<!ELEMENT surename (#PCDATA)> 
<!ELEMENT note ANY>
<!ELEMENT test2 (#PCDATA)><!--The element "test2" still has to be declared.-->
]> 
<school> 
    <data> 
        <id>
            <uid>1</uid> 
        </id>
        <information>
            <name>Michael</name>
            <surename>Julius</surename>
        </information>
        <note> 
            <test2>hans</test2>         
        </note> 
    </data> 
</school>
于 2012-07-11T15:49:12.517 回答