XML 意外元素,父元素的内容必须匹配类型

问题描述 投票:0回答:1

我是 XML 的新手(也是 stackoverflow 的新手),我正在尝试编写一个 XML 文件和一个附带的 DTD 文件,其中包含一些关于地理细分(州和省)的基本信息。我的第一个 元素工作正常,但 oXygen 在第二个 元素开始时给我以下错误:

意外元素“细分”。父元素类型的内容必须匹配“(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 问题,所以如果我做错了或者提供的上下文/代码太少(或太多?),我深表歉意。

非常感谢任何帮助!

xml dtd
1个回答
0
投票

我的朋友告诉我一个解决方案解决了我的问题,我不知道你可以在DTD文件中使用+符号来表示一个或多个元素。

换线

<!ELEMENT Subdivisions (Subdivision)>

对此:

<!ELEMENT Subdivisions (Subdivision+)>
© www.soinside.com 2019 - 2024. All rights reserved.