下面是DTD定义语法:
<!DOCTYPE TVSCHEDULE [  
<!ELEMENT TVSCHEDULE (CHANNEL+)>    //括号里的是数据类型,标准不同定义方式就不同
<!ELEMENT CHANNEL (BANNER, DAY+)>   //"+"代表CHANNEL这个标记可以在XML中有一个到多个
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY ((DATE, HOLIDAY) | (DATE, PROGRAMSLOT+))+>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME, TITLE, DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>
<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>  //这里是属性的描述,CDATA是数据类型
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>     //#REQUIRED表示CHANNEL这个属性必须要有
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED> 
]> 
如果你还是不太懂的话,去一些XML的组织看看吧,如:www.w3.org
只是这个网站上都是些鸟语,你英文还好吧

解决方案 »

  1.   

    补充一下:
    TVSCHEDULE是你的XML文档的名字
    <!ELEMENT 是声明元素的 在你的例子中就是<A>中的A<!ATTLIST 是声明属性的 你的例子中还没有属性,所以你不用声明这个了
      

  2.   

    dtd 是做不到验证 XML 里的元素文本值符合某种模式的,除非你是说固定值的内容是 aaa 或bbb,那样当我没说。要限制字符串符合某种模式,可以用 XML Schema来做到,以下是一点简单的片断仅供参考:
    <xsd:simpleType name="A">
      <xsd:restriction base="xsd:string">
        <xsd:pattern value="[aA][bB][cC]"/> <!---这里用到的是正规表达式即模式 -->
      </xsd:restriction>
    </xsd:simpleType>
      

  3.   

    不好意思,写的准确一点吧,<xsd:simpleType name="A">
      <xsd:restriction base="xsd:string">
        <xsd:pattern value="[0-9]{3}"/> <!---3个数字-->
      </xsd:restriction>
    </xsd:simpleType><xsd:simpleType name="B">
      <xsd:restriction base="xsd:string">
        <xsd:pattern value="[a-zA-Z]{3}"/> <!---3个字母,包括大小写-->
      </xsd:restriction>
    </xsd:simpleType>