我的address.dtd文件如下。当我试图使用address.xml解析SAXParserFactory文件时,异常如下:
"org.xml.sax.SAXParseException;systemId: org.xml.sax.SAXParseException lineNumber: 9;columnNumber: 22;对于与元素类型“省”相关联的属性“{1},应使用开放引号。
<!-- address.dtd -->
<!ELEMENT address (name,house-id?,village,city,postal-code,country) >
<!ELEMENT name (personal:title*,(first-name|first-init),last-name+)>
<!ELEMENT house-id (houses:title,NAME)>
<!ELEMENT personal:name (#PCDATA) >
<!ELEMENT village (#PCDATA) >
<!ELEMENT city (#PCDATA) >
<!ATTLIST city district CDATA #REQUIRED
province CDATA (Southern|Western|Nothern|Eastern) "One Sri
Lanka">
<!ELEMENT postal-code (#PCDATA) >
<!ELEMENT country (#PCDATA) >
<!ELEMENT personal:title (#PCDATA) >
<!ELEMENT first-name (#PCDATA) >
<!ELEMENT first-init (#PCDATA) >
<!ELEMENT last-name (#PCDATA) >
<!ELEMENT houses:title (#PCDATA) >
<!ELEMENT NAME (#PCDATA) >address.xml文件如下所示。
<?xml version ="1.0" encoding="UTF-8"?>
<!DOCTYPE address SYSTEM "address.dtd">
<!-- Some namespaces are declared in this-->
<address
xmlns:personal="Personal things"
xmlns:houses="Regarding to houses"
>
<name xml:space='preserve'>
<personal:title>Mr. </personal:title>
<first-name>Samitha </first-name>
<last-name>Chathuranga</last-name>
</name>
<house-id>
<houses:title>107 B</houses:title>
<NAME>Sam's Home</NAME>
<!-- An intnal entity is used for the single quote in House Name here-->
</house-id>
<village>Poramba</village>
<city district="Galle" province="Southern">AG</city>
<postal-code>80300</postal-code>
<country>Sri Lanka</country>
</address>发布于 2014-05-14 08:35:43
属性的数据类型可以是枚举或CDATA,但不能两者兼而有之。您应该删除CDATA
<!ATTLIST city
district CDATA #REQUIRED
province (Southern|Western|Nothern|Eastern) "One Sri Lanka"> 来源:attributes.asp
然而,这里仍然存在一个问题。“一个斯里兰卡”的值与您在其中列出的四个值中的任何一个都不匹配。你在想什么?
https://stackoverflow.com/questions/23648172
复制相似问题