我想为此xml文档创建DTD架构:
<root>
<student>
<name>
<firstname>S1</firstname>
<lastname>S2</lastname>
</name>
</student>
<course>
<name>CS101</name>
</course>
</root>
Run Code Online (Sandbox Code Playgroud)
你可以看到,该元素name
在course
包含纯文本,但该元素name
的student
复杂类型(第一姓,名).以下是DTD:
<!ELEMENT root (course|student)*>
<!ELEMENT student (name)>
<!ELEMENT name (lastname|firstname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT course (name)>
Run Code Online (Sandbox Code Playgroud)
当我想验证它时,我得到一个错误,因为该课程的name
结构与学生的结构不同name
.
我的问题:
name
使用DTD而不是xml架构更改元素名称的情况下为此情况制定解决方案.谢谢.
bob*_*nce 10
抱歉! 这是DTD的主要限制之一:给定的元素名称始终具有相同的内容模型.
您可以做的就是放弃对该特定元素的完全验证,并允许所有可能的内容:
<!ELEMENT name (#PCDATA|lastname|firstname)*>
Run Code Online (Sandbox Code Playgroud)