该文件不具有良好格式 期望%解决思路
该文件不具有良好格式 期望%
有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求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 code
<?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> </学生成绩> </学生> </学生管理>