gpt4 book ai didi

xml - 我对 DTD 的理解正确吗?

转载 作者:数据小太阳 更新时间:2023-10-29 02:41:20 26 4
gpt4 key购买 nike

我正在自学 XML,这是我写的第一个 DTD。下面是 XML 数据,后面是 DTD。

<?xml version="1.0" encoding="unicode" ?>
<!DOCTYPE people SYSTEM "validator.dtd">

<people>
<student>
<name>John</name>
<course>Computer Technology</course>
<semester>6</semester>
<scheme>E</scheme>
</student>

<student>
<name>Foo</name>
<course>Industrial Electronics</course>
<semester>6</semester>
<scheme>E</scheme>
</student>
</people>

和 DTD

<!ELEMENT people (student)*>
<!ELEMENT student (name,course,semester,scheme)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT course (#PCDATA)>
<!ELEMENT semester (#PCDATA)>
<!ELEMENT scheme (#PCDATA)>

这是我目前对 DTD 的理解。
我有一个名为 people 的根,其中包含 student。现在,因为我有一个 *,所以我可以让 零个或更多 学生在里面。但我想它应该改为 + (一个或多个),因为它更有意义?

student 里面是姓名、类(class)学期和方案。当我在右括号后省略任何符号时,这意味着这些标签中的每一个只能在学生标签内出现一次。这意味着一个学生不能有超过一个名字,超过一个学期等

最后,名称、类(class)、学期和方案有 #PCDATA,这意味着数据将由其他人解析,此处排除该符号会有所不同吗?

最佳答案

你说:

When I leave out any symbols after the closing parentheses then it means that each of these tags can appear only once inside the student tag.

我只想补充一点,每个标签必须出现一次;它们不是可选的,除非您有 ?*。此外,它们必须按该顺序出现(因为您使用了 ,)。

#PCDATA 表示已解析的字符数据,它基本上是将由解析器解析的文本。例如,文本“Sample &text;”将被解析,&text; 实体引用将被解析。

唯一真正需要#PCDATA 符号(出现指示符)的情况是当您有混合内容(文本和元素)时。它也必须是 *:

<!ELEMENT elem (#PCDATA|anotherElem)*>

关于xml - 我对 DTD 的理解正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com