在尝试通过 eclipse 使用 ImDTD 创建 XML 时未指定根元素的原因是什么?



我正在尝试使用DTD文件中创建的元素创建一个XML文件,其中包含有关书籍列表的信息,所有元素都已正确引用(我认为?当我尝试使用 DTD 声明中的元素创建 XML 文件时,提示错误;"必须指定根元素"。我的代码是否存在问题,或者是否有可能,尽管不太可能,但它是 Eclipse 的问题(即不合适的版本,缺少插件)?

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT bookList(book)*>
<!ELEMENT book((author | editor, contributors+), title, publisher, isbn_num, price, vol?, edition?)>
<!ELEMENT author(#PCDATA)>
<!ELEMENT editor(#PCDATA)>
<!ELEMENT contributors(#PCDATA)>
<!ELEMENT title(#PCDATA)>
<!ELEMENT publisher(#PCDATA)>
<!ATTLIST isbn_num id_code ID #REQUIRED>
<!ELEMENT price(#PCDATA)>
<!ATTLIST price currency (GBP | EUR | USD) #IMPLIED>
<!ELEMENT vol(#PCDATA)>
<!ELEMENT edition(#PCDATA)>

使用的版本:Eclipse Java EE IDE,Oxygen.1 Release (4.7.1)

您的 XML 需要一个根元素,并链接到 DTD 文件。这样的东西将是外部DTD的最终结果。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root SYSTEM "file.dtd">
<root>
<element1>a</element1>
<element2>b</element2>
<element3>c</element3>
<element4>d</element4>
</root>

"根"可以是您想要的任何内容。

看起来您正在制作外部 DTD,在这种情况下,您的文件不需要 XML 定义。

<!ELEMENT bookList(book)*>
<!ELEMENT book((author | editor, contributors+), title, publisher, isbn_num, price, vol?, edition?)>
<!ELEMENT author(#PCDATA)>
<!ELEMENT editor(#PCDATA)>
<!ELEMENT contributors(#PCDATA)>
<!ELEMENT title(#PCDATA)>
<!ELEMENT publisher(#PCDATA)>
<!ATTLIST isbn_num id_code ID #REQUIRED>
<!ELEMENT price(#PCDATA)>
<!ATTLIST price currency (GBP | EUR | USD) #IMPLIED>
<!ELEMENT vol(#PCDATA)>
<!ELEMENT edition(#PCDATA)>

如果您尝试制作内部 DTD。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE bookList [
<!ELEMENT bookList(book)*>
<!ELEMENT book((author | editor, contributors+), title, publisher, isbn_num, price, vol?, edition?)>
<!ELEMENT author(#PCDATA)>
<!ELEMENT editor(#PCDATA)>
<!ELEMENT contributors(#PCDATA)>
<!ELEMENT title(#PCDATA)>
<!ELEMENT publisher(#PCDATA)>
<!ATTLIST isbn_num id_code ID #REQUIRED>
<!ELEMENT price(#PCDATA)>
<!ATTLIST price currency (GBP | EUR | USD) #IMPLIED>
<!ELEMENT vol(#PCDATA)>
<!ELEMENT edition(#PCDATA)>
]>
<bookList>......</bookList>

我隔开了你的代码,但它没有显示错误。例如,我将"bookList(book)"分隔为"bookList(book)"。见下文:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT bookList (book)*>
<!ELEMENT book ((author | editor, contributors+), title, publisher, isbn_num, price, vol?, edition?)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT editor (#PCDATA)>
<!ELEMENT contributors (#PCDATA)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ATTLIST isbn_num id_code ID #REQUIRED>
<!ELEMENT price (#PCDATA)>
<!ATTLIST price currency (GBP | EUR | USD) #IMPLIED>
<!ELEMENT vol (#PCDATA)>
<!ELEMENT edition (#PCDATA)>

希望这有帮助

最新更新