我是 XML 的新手(也是 stackoverflow 的新手),我正在尝试编写一个 XML 文件和一个附带的 DTD 文件,其中包含一些关于地理细分(州和省)的基本信息。我的第一个
意外元素“细分”。父元素类型的内容必须匹配“(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 问题,所以如果我做错了或者提供的上下文/代码太少(或太多?),我深表歉意。
非常感谢任何帮助!
我的朋友告诉我一个解决方案解决了我的问题,我不知道你可以在DTD文件中使用+符号来表示一个或多个元素。
换线
<!ELEMENT Subdivisions (Subdivision)>
对此:
<!ELEMENT Subdivisions (Subdivision+)>