如何将相同的元素名称用于不同的目的(在 XML 和 DTD 中)?
我想为此 xml 文档创建 DTD 架构:
<root>
<student>
<name>
<firstname>S1</firstname>
<lastname>S2</lastname>
</name>
</student>
<course>
<name>CS101</name>
</course>
</root>
如您所见,course
中的元素 name
包含纯文本,但 student
中的元素 name
包含纯文本。是复杂类型(名字,姓氏)。以下是 DTD:
<!ELEMENT root (course|student)*>
<!ELEMENT student (name)>
<!ELEMENT name (lastname|firstname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT course (name)>
当我想要验证它时,我收到错误,因为课程的 name
与学生的 name
具有不同的结构。
我的问题:
- 如何在不使用DTD而不是xml架构更改元素
name
的名称的情况下针对这种情况制定解决方案。
谢谢。
I Want to create a DTD schema for this xml document:
<root>
<student>
<name>
<firstname>S1</firstname>
<lastname>S2</lastname>
</name>
</student>
<course>
<name>CS101</name>
</course>
</root>
as you can see , the element name
in the course
contains plain text ,but the element name
in the student
is complex type ( first-name, last-name ). The following is the DTD:
<!ELEMENT root (course|student)*>
<!ELEMENT student (name)>
<!ELEMENT name (lastname|firstname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT course (name)>
When I want to validate it , I get an error because the course's name
has different structure then the student's name
.
My Question:
- how can I make a work-around solution for this situation without changing the name of element
name
using DTD not xml schema .
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对不起!这是 DTD 的主要限制之一:给定的元素名称始终具有相同的内容模型。
您所能做的就是放弃对该特定元素的完全验证,并允许所有可能的内容:
Sorry! That's one of the major limitations of DTD: a given element name always has the same content model.
About all you can do is give up on full validation for that particular element, and allow all possible contents: