以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  dtd为什么不进行有效性验证  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=15921)


--  作者:codemyth
--  发布时间:3/22/2005 9:55:00 PM

--  dtd为什么不进行有效性验证
<!-- nmm.dtd-->

<!ELEMENT project (id_generator,tables,initdatas?)>
<!ATTLIST project
  name CDATA #REQUIRED
  descript CDATA #REQUIRED
  column_prefix CDATA #IMPLIED
  table_prefix CDATA #IMPLIED>
  
<!ELEMENT id_generator (#PCDATA)>
<!ATTLIST id_generator
  table_name CDATA #REQUIRED
  column_id_table CDATA #REQUIRED
  column_current_id CDATA #REQUIRED>
  
<!ELEMENT tables (table+)>

<!ELEMENT table (columnlist,fk*)>
<!ATTLIST table
  name CDATA #REQUIRED
  caption CDATA #IMPLIED>
  
<!ELEMENT column_list (column+)>

<!ELEMENT column (#PCDATA)>
<!ATTLIST column
  name CDATA #REQUIRED
  data_type (varchar|char|integer|bool|numeric|datetime|date) "varchar"  
  data_type CDATA #REQUIRED
  length CDATA #IMPLIED
  precisioin CDATA #IMPLIED
  caption CDATA #IMPLIED
  default_value CDATA #IMPLIED
  default_value (true|false) "false"
  create_index  CDATA #IMPLIED
  create_index  (true|false) "false"
  allow_null CDATA #IMPLIED
  pk CDATA #IMPLIED
  pk (true|false) "false">  

<!ELEMENT fk (#PCDATA)>  
<!ATTLIST fk
  column CDATA #REQUIRED
  reference_column CDATA #REQUIRED
  parent_table CDATA #IMPLIED>
  
<!ELEMENT initdatas (exec_sql*)>

<!ELEMENT exec_sql (#PCDATA)>
<!ATTLIST exec_sql
  sql CDATA #REQUIRED>
  
  


<?xml version="1.0" encoding="gb2312" standalone="no"?>
<!DOCTYPE project SYSTEM "nmm.dtd">
   <!-- =================================================================== -->
   <!-- Generate ddl                                                        -->
   <!--change history
     2005-3-22 0:03 初稿
     2005-3-22 0:14 添加权限模块基础数据
   -->
   <!-- =================================================================== -->
   
<!--
 name is the database name ,if it exist then it will be clear.  
 column_prefix,table_prefix will auto added to all the table and column,prevent ur definition has reserved word
-->
<project name="exam" descript="考试系统" column_prefix="" table_prefix="cm_">
 <!--
  id_generator is the table that generate unique integer id,it use column_current_id save the maxid and column_id_table as diffrent
  table kind
 -->

 <id_generator table_name="sys_nextid" column_id_table="table_name" column_current_id="current_id"/>
 <!--tables retrive all the table will be in database-->
 <tables> 

  <table name="sys_right" caption="系统权限列表">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="权限模块编号"/>
          <column name="parent_id" data_type="integer" caption="所属权限模块编号"/>
          <column name="name" data_type="varchar" length="30" caption="权限模块名称"/>
          <column name="is_leaf" data_type="bool" caption="是否最终权限"/>
      </column_list>
      <fk column="parent_id" reference_column="id"/>
  </table>
  
  <table name="sys_group" caption="系统权限组">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="权限组编号"/>
          <column name="name" create_index="true" data_type="varchar" length="30" caption="权限组名称"/>
      </column_list>
      <fk column="group_id" parent_table="sys_group" reference_column="id"/>
  </table>
  
  <table name="sys_group_right" caption="权限组权限">
      <column_list>
          <column name="group_id" data_type="integer" caption="权限模组编号"/>
          <column name="right_id" data_type="integer" caption="权限模块编号"/>
      </column_list>
      <fk column="group_id" parent_table="sys_group" reference_column="id"/>
      <fk column="right_id" parent_table="sys_right" reference_column="id"/>
  </table>
  
  <table name="sys_user" caption="用户列表">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="用户编号"/>
          <column name="name" create_index="true" data_type="varchar" length="30" caption="用户姓名"/>
          <column name="userid" create_index="true" data_type="varchar" length="30" caption="用户登录id"/>
          <column name="password" data_type="varchar" length="30" caption="用户登录密码"/>
          <column name="expiredate" data_type="date" caption="用户过期时间"/>
          <column name="group_id" data_type="integer" caption="用户所属权限组"/>
      </column_list>
      <fk column="group_id" parent_table="sys_group" reference_column="id"/>
  </table>
  
  <table name="sys_config" caption="系统参数">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="流水号"/>
          <column name="param_name" data_type="varchar" length="30" caption="参数名称"/>
          <column name="param_value" data_type="varchar" length="30" caption="参数值"/>
      </column_list>
  </table>
  
  <table name="sys_unit" caption="单位列表">
      <column_list>
          <column name="id"   pk="true" data_type="integer" caption="单位编号"/>
          <column name="parent_id" data_type="integer" caption="上级单位编号"/>
          <column name="name" create_index="true" data_type="varchar" length="100" caption="单位名称"/>
          <column name="addr" data_type="varchar" length="100" caption="单位地址"/>
          <column name="contact" data_type="varchar" length="100" caption="联系方式"/>
          <column name="linkman" data_type="varchar" length="30" caption="联系人"/>
      </column_list>
      <fk column="parent_id" reference_column="id"/>
  </table>

  <table name="sys_code" caption="系统代码">
   <column_list>
    <column name="id" pk="true" data_type="integer" caption="流水号"/>
    <column name="kind" data_type="varchar" length="30" caption="代码类别"/>
    <column name="option" data_type="varchar" length="30" caption="可选项"/>
   </column_list>
  </table>
     
  <table name="quiz" caption="试题">
      <column_list>
          <column name="id" pk="true" create_index="true" data_type="integer" caption="试题编号"/>
          <column name="knowledge" data_type="varchar" length="30" caption="所属知识点" />
          <column name="difficult" data_type="integer" caption="试题难度" />
          <column name="type" data_type="varchar" length="30" caption="试题类型"/>
          <!--如果是填空题,可以插入%blank.20%宏来表示需要填入的位置,系统会根据宏动态生成空缺供考生填写-->
          <column name="question" data_type="varchar" length="300" caption="题干"/>
          <column name="answer" data_type="varchar" length="300" caption="答案"/>
          <column name="reference_score" data_type="integer" caption="参考分值"/>
          <!--如果不是有效,则在生成试卷时将不会包含该题-->
          <column name="is_available" data_type="bool" caption="试题是否有效"/>
      </column_list>
  </table>
  
  <table name="tester" caption="考生">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="考生编号"/>
          <column name="name" data_type="varchar" length="30" caption="姓名"/>
          <column name="login_id" data_type="varchar" length="30" caption="登录账号"/>
          <column name="password" data_type="varchar" length="30" caption="登录密码"/>
          <column name="unit_id" data_type="integer" caption="所属单位"/>
          <column name="birth" data_type="varchar" length="30" caption="出生年月"/>
          <column name="sex" data_type="varchar" length="30" caption="性别"/>
      </column_list>
      <fk column="unit_id" parent_table="sys_unit" reference_column="id"/>
  </table>
  
  <table name="paper_generate_rule" caption="试卷生成规则">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="流水号"/>
          <column name="name" data_type="varchar" length="30" caption="规则名称"/>
          <column name="sum_max_difficult" data_type="integer" caption="总体最高难度"/>
          <column name="sum_min_difficult" data_type="integer" caption="总体最低难度"/>
          <column name="min_difficult" data_type="integer" caption="单题最低难度"/>
          <column name="max_difficult" data_type="integer" caption="单题最高难度"/>
          <column name="max_single_selector" data_type="integer" caption="单选题最大数目"/>
          <column name="min_single_selector" data_type="integer" caption="单选题最小数目"/>
          <column name="max_multi_selector" data_type="integer" caption="多选题最大数目"/>
          <column name="min_multi_selector" data_type="integer" caption="多选题最小数目"/>
          <column name="max_judgment" data_type="integer" caption="判断题最大数目"/>
          <column name="min_judgment" data_type="integer" caption="判断题最小数目"/>
          <column name="max_blank" data_type="integer" caption="填空题最大数目"/>
          <column name="min_blank" data_type="integer" caption="填空题最小数目"/>
          <column name="max_subjection" data_type="integer" caption="主观题最大数目"/>
          <column name="min_subjection" data_type="integer" caption="主观题最小数目"/>
      </column_list>
      <fk column="unit_id" parent_table="sys_unit" reference_column="id"/>
  </table>
  
  <table name="test_paper" caption="试卷">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="试卷流水号"/>
          <column name="name" data_type="varchar" length="50" caption="试卷名称"/>
          <column name="generate_time" data_type="datetime" caption="生成时间"/>
          <column name="generate_man" data_type="varchar" caption="生成人"/>
          <column name="available_time" data_type="datetime" caption="生效时间"/>
          <column name="full_mark" data_type="integer" caption="满分分数"/>
          <column name="pass_score" data_type="integer" caption="及格分数"/>
          <column name="time_limit" data_type="integer" caption="试卷答题时限(分钟)"/>
      </column_list>
  </table>
  
  <table name="paper_quizs" caption="试卷题目">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="考卷编号"/>
          <column name="paper_id" data_type="integer" caption="试卷流水号"/>
          <column name="quiz_id" data_type="integer" caption="试题编号"/>
          <column name="score" data_type="integer" caption="分值"/>
      </column_list>
      <fk column="paper_id" parent_table="test_paper" reference_column="id"/>
      <fk column="quiz_id" parent_table="quiz" reference_column="id"/>
  </table>
  
  <!--允许参加某考试的考生列表-->
  <table name="submitted_paper" caption="考生答卷">
      <column_list>
          <column name="id" pk="true" data_type="integer" caption="答卷编号"/>
          <column name="paper_id" data_type="integer" caption="试卷流水号"/>
          <column name="tester_id" data_type="integer" caption="考生编号"/>
          <column name="test_time" data_type="integer" caption="考试所用时间"/>
          <column name="final_score" data_type="integer" caption="最后得分"/>
      </column_list>
      <fk column="paper_id" parent_table="test_paper" reference_column="id"/>
      <fk column="tester_id" parent_table="tester" reference_column="id"/>
  </table>
  
  <table name="submitted_answer" caption="考生答案">
      <column_list>
          <column name="submitted_id" data_type="integer" caption="答卷编号"/>
          <column name="quiz_id" data_type="integer" caption="题目编号"/>
          <column name="answer" data_type="varchar" length="300" caption="答案"/>
          <column name="score" data_type="integer" caption="得分"/>
          <column name="taster" data_type="varchar" length="30" caption="审阅人"/>
      </column_list>
      <fk column="submitted_id" parent_table="submitted_paper" reference_column="id"/>
      <fk column="quiz_id" parent_table="quiz" reference_column="id"/>
  </table>
  
 </tables>
 
 <initdatas>
  <exec_sql sql="insert into sys_code(id,kind,option) values(1,'试卷知识点','基础')"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(00,0,'系统',false)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(01,0,'考生',false)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(02,01,'新增考生',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(03,01,'删除考生',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(04,01,'修改考生',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(05,0,'试题库',false)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(06,06,'新增试题',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(07,06,'修改试题',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(08,06,'删除试题',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(09,0,'试卷',false)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(10,9,'生成试卷',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(11,9,'注册考生到考试',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(12,9,'阅卷',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(13,9,'答卷查看',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(14,0,'考生成绩',false)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(15,14,'查看考生成绩',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(16,14,'修正考生成绩',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(17,0,'统计查询',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(18,0,'系统维护',false)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(19,18,'用户管理',false)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(21,19,'修改权限',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(22,19,'添加权限组',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(23,19,'删除权限组',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(24,19,'添加用户',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(25,19,'删除用户',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(26,19,'修改用户',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(27,18,'代码维护',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(28,18,'系统参数维护',true)"/>
  <exec_sql sql="insert into sys_right(id,parent_id,name,is_leaf) values(29,18,'单位信息维护',true)"/>
 </initdatas>                                                               
                                                                            
</project>                                                                     
                                                              
    

上述两个文件放在同一目录,但是xml中并没有按照dtd的语法,如节点的顺序等,dtd并没有执行验证 ,在ie中xml依然能够正常先是,请问何解?
                                                                               
                                                                               


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
15,285.160ms