该文件不具有良好格式 期望%
有xml求DTD [color=#FF0000][/color]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 学生管理 [
<!ELEMENT 学生管理 (学生*)>
<!ELEMENT 学生 (学生基本信息*, 专业信息*, 住宿信息*, 学生成绩*)>
<!ELEMENT 学生基本信息 (学号*, 姓名*, 性别*, 出生年月*,通讯地址*)>
<!ELEMENT 学号 (#PCDATA)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
<!ELEMENT 出生年月 (#PCDATA)>
<!ELEMENT 通讯地址 (#PCDATA)>
<!ELEMENT 专业信息 (专业*, 年级*, 学号*)>
<!ELEMENT 专业 (#PCDATA)>
<!ELEMENT 年级 (#PCDATA)>
<!ELEMENT 学号 (#PCDATA)>
<!ELEMENT 住宿信息 (楼号*, 楼层*,房间号*)>
<!ELEMENT 楼号 (#PCDATA)>
<!ELEMENT 楼层 (#PCDATA)>
<!ELEMENT 房间号 (#PCDATA)>
<!ELEMENT 学生成绩 (C*, C#*, VB*, XML*,JAVA*)>
<!ELEMENT C (#PCDATA)>
<!ELEMENT C# (#PCDATA)>
<!ELEMENT VB (#PCDATA)>
<!ELEMENT XML (#PCDATA)>
<!ELEMENT JAVA (#PCDATA)>
]>
<学生管理>
<学生>
<学生基本信息>
<学号></学号>
<姓名></姓名>
<性别></性别>
<出生年月></出生年月>
<通讯地址></通讯地址>
</学生基本信息>
<专业信息>
<专业></专业>
<年级></年级>
<学号></学号>
</专业信息>
<住宿信息>
<楼号></楼号>
<楼层></楼层>
<房间号></房间号>
</住宿信息>
<学生成绩>
<C></C>
<C#></C#>
<VB></VB>
<XML></XML>
<JAVA></JAVA>
</学生成绩>
</学生>
</学生管理>
[解决办法]
首先,你是有DTD的,所以不用求DTD了。
你的XML文件本身是不具有良性结构的。XML规范中要求所有元素都只能用字母、数字、下划线、中线和点号组成,所以C#是不能作为元素的。
此外,还有一个不算错误的小问题,为什么你在内部DTD里定义字元素都要加上*,说明你对DTD的使用完全没有理解,有必须的加上,如像学号本来只能有一个的,就不要加了,画蛇添足,多此一举。
修改后程序如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE 学生管理 [<!ELEMENT 学生管理 (学生*)><!ELEMENT 学生 (学生基本信息, 专业信息, 住宿信息, 学生成绩)><!ELEMENT 学生基本信息 (学号, 姓名, 性别, 出生年月, 通讯地址*)><!ELEMENT 学号 (#PCDATA)><!ELEMENT 姓名 (#PCDATA)><!ELEMENT 性别 (#PCDATA)><!ELEMENT 出生年月 (#PCDATA)><!ELEMENT 通讯地址 (#PCDATA)><!ELEMENT 专业信息 (专业, 年级, 学号)><!ELEMENT 专业 (#PCDATA)><!ELEMENT 年级 (#PCDATA)><!ELEMENT 学号 (#PCDATA)><!ELEMENT 住宿信息 (楼号, 楼层, 房间号)><!ELEMENT 楼号 (#PCDATA)><!ELEMENT 楼层 (#PCDATA)><!ELEMENT 房间号 (#PCDATA)><!ELEMENT 学生成绩 (C, C_, VB, XML, JAVA)><!ELEMENT C (#PCDATA)><!ELEMENT C_ (#PCDATA)><!ELEMENT VB (#PCDATA)><!ELEMENT XML (#PCDATA)><!ELEMENT JAVA (#PCDATA)>]><学生管理><学生><学生基本信息><学号></学号><姓名></姓名><性别></性别><出生年月></出生年月><通讯地址></通讯地址></学生基本信息><专业信息><专业></专业><年级></年级><学号></学号></专业信息><住宿信息><楼号></楼号><楼层></楼层><房间号></房间号></住宿信息><学生成绩><C></C><C_></C_><VB></VB><XML></XML><JAVA></JAVA></学生成绩></学生></学生管理>