可以的吧//a.xml
<!DOCTYPE f SYSTEM "a.dtd">
<f>
<a>
<c>
</c>
</a>
<b>
<c name="temp"></c>
</b>
</f>//a.dtd
<?xml version="1.0" ?>
<!ELEMENT f (a,b)>
<!ELEMENT a (c)>
<!ELEMENT c (#PCDATA)>
<!ATTLIST c name CDATA #IMPLIED>
<!ELEMENT b (c)>
<!ATTLIST b type CDATA #IMPLIED>

解决方案 »

  1.   

    我试过  好像不行
    提示Attribute "name" is required and must be specified for element type "c"
    看了些资料   好像说dtd的元素都是全局的  必须一致
    这样的话   就不能有相同名称的子元素了啊
    好像很矛盾
      

  2.   

    绝对可以的。 楼上说的:
    -------------------------------------------
    我试过 好像不行
    提示Attribute "name" is required and must be specified for element type "c"
    -------------------------------------------出现这个错误,是因为你定义了xml 的约束。而你没有按照这个约束来写XML
      

  3.   

    约束?
    我定义了<!ATTLIST c name CDATA #IMPLIED>
    c要有个name属性
    但是  如果我希望的是 b下面的c有这个属性
    a下面的没有  怎么办?
    就提示那个错误啊~
      

  4.   

    <a>
    <c></c>
    </a>
    <b>
    <c name="temp"></c>
    </b>
    这样是可以的,但是下面的不性
    <a>
    <c></c>
    </a>
    <b>
    <c name="temp"></c>
    </b>
    <a>
    </a>
    LZ明白了么? 命名空间!!!
      

  5.   

    命名空间?
    那我如果在java解析程序中设置一下
    可不可以啊?
      

  6.   

    我查看了有关命名空间的资料
    好像是定义多dtd的啊
    和我的问题不太一样吧
      

  7.   

    再问个问题比如下面的结构
    <a name="1">
     <a name="2">
      <b></b>
      <c></c>
    </a>
    </a>
    就是说a下面还有子元素a
    这种情况怎么写dtd文件
      

  8.   

    素声明
    格式:<!ELMENT 元素名称 元素的内容格式的定义>
    (1)基本元素声明:<!ELMENT 学号 (#PCDATA)>    元素名称后直接跟的是数据类型则为基本元素。
    (2)复合元素声明:<!ELMENT 学生 (学号,姓名,班级)> 学生元素是复合元素,它包含学号,姓名,班级三个基本元素。其实根元素是复合元素的一个特例,所有的元素都直接或间接地包含在根元素中。元素出现次数的控制加"?"表示些元素可出现0次或1次;加"*"表示可出现任意次;加"+"表示至少要出现一次。如:<!ELMENT 学生 (学号?,姓名,班级,爱好*)>则表示一个学生只有唯一的学号,或者还未分配学号,即学号元素出现0次或1次,而爱好可以没有,也可以有好几方面的,所以用*(任意次)限定。选择性元素 用"|"限定,如 <!ELMENT 学生(姓名,性别,(优秀|良好|中等))>属性声明
    格式:<!ATTLIST Eltment_name Attribute_name Type [Keyword] [Default_value]>  
    !ATTLIST 为定义属性的指令,后面是元素的名称,属性名称,属性值类型及默认值的关键字及默认值。
    如一个学生有性别及班级两个属性,可这样定义:<!ATTLIST  学生 性别 CDATA "女" 班级 CDATA "计算机03.2班">
    必需赋值的属性:加REQUIRED关键字,如:<!ATTLIST  学生 性别 CDATA #REQUIRED "女" 班级 CDATA "计算机03.2班"> 表示必需给出学生的性别值。可有可无的属性则用IMPLIED关键字,固定取值的属性用FIXED关键字。
    属性的类型:在XML中共有10种属性类型,如下表:类型 含义 
    CDATA 字符数据 
    Enumerated 可能的取值的列表 
    ID 唯一的数字 
    IDREF ID类型属性的值 
    IDREFS 由空格分开的若干个ID 
    ENTITY 实体 
    ENTITYS 若干个实体 
    NMTOKEN XML名称 
    NOTATION DTD中声明的注释名 
    NMTOKENS 多个XML名称