我是 XML 新手(也是 stackoverflow 新手),我正在尝试编写一个 XML 文件和一个随附的 DTD 文件,其中包含有关地理分区(州和省)的一些基本信息。我的第一个
Unexpected element "Subdivision". The content of the parent element type must match "(Subdivision)".
我不确定是什么导致第一个工作正常而第二个错误,我可能遗漏了一些东西,但我不知道它是什么。
这里是有问题的 XML 代码,稍作修改:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Subdivisions SYSTEM "Subdivision.dtd">
<Subdivisions>
<Subdivision subdivisionName = "Nebraska">
<official_name>State of Nebraska</official_name>
<country>United States</country>
<iso_3166_code>US-NE</iso_3166_code>
<regional_capital>Lincoln</regional_capital>
<population>1961504</population>
<land_area_miles>77358</land_area_miles>
</Subdivision>
<Subdivision subdivisionName = "Southwest Finland"> <!-- the error is on this line-->
<official_name>Southwest Finland</official_name>
<country>Finland</country>
<iso_3166_code>FI-19</iso_3166_code>
<regional_capital>Turku</regional_capital>
<population>481403</population>
<land_area_miles>4212</land_area_miles>
</Subdivision>
<!-- trimmed the rest -->
</Subdivisions>
以及随之而来的 DTD:
<?xml encoding="UTF-8"?>
<!ELEMENT Subdivisions (Subdivision)>
<!ELEMENT Subdivision (official_name, country, iso_3166_code, regional_capital, population, land_area_miles)>
<!ELEMENT official_name (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT iso_3166_code (#PCDATA)>
<!ELEMENT regional_capital (#PCDATA)>
<!ELEMENT population (#PCDATA)>
<!ELEMENT land_area_miles (#PCDATA)>
<!ATTLIST Subdivision subdivisionName CDATA #REQUIRED>
这是我第一次做 XML,也是我第一次问 StackOverflow 问题,所以如果我做错了或者提供的上下文/代码太少(或太多?),我深表歉意。
非常感谢任何帮助!
最佳答案
我的 friend 告诉我一个解决方案,解决了我的问题,我不知道你可以在DTD文件中使用+符号来表示有一个或多个元素。
换了行
<!ELEMENT Subdivisions (Subdivision)>
对此:
<!ELEMENT Subdivisions (Subdivision+)>
关于XML 意外元素,父元素的内容必须与类型匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75498173/