如何将相同的元素名称用于不同的目的(在 XML 和 DTD 中)?

发布于 2024-09-03 03:37:21 字数 956 浏览 2 评论 0原文

我想为此 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

很糊涂小朋友 2024-09-10 03:37:21

对不起!这是 DTD 的主要限制之一:给定的元素名称始终具有相同的内容模型。

您所能做的就是放弃对该特定元素的完全验证,并允许所有可能的内容:

<!ELEMENT name (#PCDATA|lastname|firstname)*>

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:

<!ELEMENT name (#PCDATA|lastname|firstname)*>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文