我如何在 DTD 上声明具有相同名称(在 XML 上)的元素?
How do i declare elements with the same name(on XML) on a DTD?
我是 XML 和 DTD 的初学者,我无法弄清楚一件事。
我如何在 DTD 上声明具有相同名称(在 XML 上)的元素?这是我的 XML 文件,看看我的意思。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE family SYSTEM "family.dtd">
<family>
<Name>
<FirstName>George</FirstName>
<LastName>Costanza</LastName>
</Name>
<Name>
<FirstName>Jerry</FirstName>
<FirstName>Allen</FirstName>
<LastName>Seinfeld</LastName>
<Phone>0522-112233</Phone>
</Name>
<Name>
<FirstName>Elaine</FirstName>
<LastName>Benes</LastName>
<Phone>0522-998877</Phone>
<Phone>070-100101</Phone>
<vip></vip>
</Name>
</family>
如您所见,"Name" 元素被多次使用。我在我的 DTD 上试过这个,但它当然说元素名称已经声明。
<!ELEMENT family (Name+)>
<!ELEMENT Name (FirstName, LastName)>
<!ELEMENT FirstName(#PCDATA)>
<!ELEMENT LastName(#PCDATA)>
<!ELEMENT Name (FirstName, FirstName, LastName, Phone)>
那么我该如何解决这个问题呢?我希望我说清楚了。
您的 DTD 对 Name
有不同的定义,这没有帮助。您可能希望其中一些能够出现零次,例如
<!ELEMENT family (Name+)>
<!ELEMENT Name (FirstName+, LastName, Phone*)>
<!ELEMENT FirstName (#PCDATA)>
<!ELEMENT LastName (#PCDATA)>
其中 +
声明命名元素将在块中出现一次或多次,而 *
声明命名元素将出现零次或多次。如果您没有任何量词,则命名元素将只出现一次。
另请注意,您在某些元素名称和内容类型之间缺少 space,例如 FirstName
和 (#PCDATA)
。
最后,vip
的开始标签在哪里?
我是 XML 和 DTD 的初学者,我无法弄清楚一件事。 我如何在 DTD 上声明具有相同名称(在 XML 上)的元素?这是我的 XML 文件,看看我的意思。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE family SYSTEM "family.dtd">
<family>
<Name>
<FirstName>George</FirstName>
<LastName>Costanza</LastName>
</Name>
<Name>
<FirstName>Jerry</FirstName>
<FirstName>Allen</FirstName>
<LastName>Seinfeld</LastName>
<Phone>0522-112233</Phone>
</Name>
<Name>
<FirstName>Elaine</FirstName>
<LastName>Benes</LastName>
<Phone>0522-998877</Phone>
<Phone>070-100101</Phone>
<vip></vip>
</Name>
</family>
如您所见,"Name" 元素被多次使用。我在我的 DTD 上试过这个,但它当然说元素名称已经声明。
<!ELEMENT family (Name+)>
<!ELEMENT Name (FirstName, LastName)>
<!ELEMENT FirstName(#PCDATA)>
<!ELEMENT LastName(#PCDATA)>
<!ELEMENT Name (FirstName, FirstName, LastName, Phone)>
那么我该如何解决这个问题呢?我希望我说清楚了。
您的 DTD 对 Name
有不同的定义,这没有帮助。您可能希望其中一些能够出现零次,例如
<!ELEMENT family (Name+)>
<!ELEMENT Name (FirstName+, LastName, Phone*)>
<!ELEMENT FirstName (#PCDATA)>
<!ELEMENT LastName (#PCDATA)>
其中 +
声明命名元素将在块中出现一次或多次,而 *
声明命名元素将出现零次或多次。如果您没有任何量词,则命名元素将只出现一次。
另请注意,您在某些元素名称和内容类型之间缺少 space,例如 FirstName
和 (#PCDATA)
。
最后,vip
的开始标签在哪里?