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

标签 xml dtd

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

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/

相关文章:

xml - go - 标签中的属性/隐藏父标签 : SOAP envelope

java - 从 fragment 膨胀 Activity 时出错 : InflateException

html - 特殊 HTML 构造标签的名称

.net - 我可以在 App.config 中声明和使用 DTD 实体吗?

c# - 如何用特殊字符替换 XML 文档中的文本?

java - Android : java. lang.OutOfMemoryError:

java - 我还应该在 Java 5 或 6 中使用 JDOM 吗?

java - 在Java中,如何使用DTD根据XML中的光标位置填充可用标签?

css - 使用 CSS 显示 XML : How to handle &nbsp?

html - xhtml/mobile 1.2 DOCTYPE 导致奇怪的工件