第二步,就是加入XML特性 牐犠⒁猓任何xml文档在其被处理之前最好先进行有效性验证,提供验证一般有两种重要的途径。其一就是提供DTD(文档类型定义),实际上就是让用户提供指令集,然后在xml文档加载的时候对其进行有效性分析,看是否有无效指令,简单说就是创建一个编译环境;另外一个就是提供一个所谓的schema。.其作用跟DTD完全一样,只是在表现形式上好于DTD,因为它本身也是一个XML文档。这里我采用了schema的形式,当然了,读者用兴趣也可以将其替换问相应的DTD版本。下面列出该schema的关于控件和topmenu对象的代码,如果要看该文档的详细代码,请看 “代码.doc”。 牐爉enu.xdr: 牐牐?xml version="1.0" encoding="UTF-8"?> 牐牐糞chema name="menus" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> 牐牐糳escription> 牐爉enus schema used to validate menu.xml 牐牐/description> 牐牐糆lementType name="menu" model="closed" content="empty"> 牐牐糀ttributeType name="id" dt:type="string" required="yes"/> 牐牐糰tttibute type="id"/> 牐牐糴lement name="topmenu" model="closed" minOccurs="0" maxOccurs="*" content="empty"/> 牐牐/ElementType> 牐牐糆lementType name="topmenu" model="closed" content="empty"> 牐牐糀ttributeType name="id" dt:type="string" required="yes"/> 牐牐糀ttributeType name="text" dt:type="string" required="yes"/> 牐牐糀ttributeType name="linkurl" dt:type="string" required="yes"/> 牐牐糀ttributeType name="isparent" dt:type="string" required="yes"/> 牐牐糰tttibute type="id"/> 牐牐糰tttibute type="text"/> 牐牐糰tttibute type="linkurl"/> 牐牐糰tttibute type="isparent"/> 牐牐糴lement name="submenu" model="closed" minOccurs="0" maxOccurs="*" content="empty"/> 牐牐/ElementType> 牐牐糆lementType name="submenu" model="closed" content="empty"> 牐牐糀ttributeType name="id" dt:type="string" required="yes"/> 牐牐糀ttributeType name="text" dt:type="string" required="yes"/> 牐牐糀ttributeType name="linkurl" dt:type="string" required="yes"/> 牐牐糀ttributeType name="isparent" dt:type="string" required="yes"/> 牐牐糰tttibute type="id"/> 牐牐糰tttibute type="text"/> 牐牐糰tttibute type="linkurl"/> 牐牐糰tttibute type="isparent"/> 牐牐糴lement name="childrenmenu" model="closed" minOccurs="0" maxOccurs="*" content="empty"/> 牐牐/ElementType> 牐牐糆lementType name="childrenmenu" model="closed" content="empty"> 牐牐糀ttributeType name="id" dt:type="string" required="yes"/> 牐牐糀ttributeType name="text" dt:type="string" required="yes"/> 牐牐糀ttributeType name="linkurl" dt:type="string" required="yes"/> 牐牐糀ttributeType name="isparent" dt:type="string" required="yes"/> 牐牐糰tttibute type="id"/> 牐牐糰tttibute type="text"/> 牐牐糰tttibute type="linkurl"/> 牐牐糰tttibute type="isparent"/> 牐牐糴lement name="menuitem" model="closed" minOccurs="0" maxOccurs="*" content="empty"/> 牐牐/ElementType> 牐牐糆lementType name="menuitem" model="closed" content="empty"> 牐牐糀ttributeType name="id" dt:type="string" required="yes"/> 牐牐糀ttributeType name="text" dt:type="string" required="yes"/> 牐牐糰tttibute type="id"/> 牐牐糰tttibute type="text"/> 牐牐/ElementType> 牐牐/Schema> 牐犎绻您对html比较熟悉的话,相信上面的代码即使是以前没有接触过也应该清楚了,在.xdr中,有两个对象,其一是元素,用前缀 ElementType 来定义,另外一个是该元素所对应的属性,用前缀atttibuteTpye,定义完这两个对象后,就是要将它们实例化,对应的前缀分别是Element 和atttibute,然后您就可以使用这两种已经实例化了的对象,就象使用html中<a>,<l>,<body>,<head>等标记一样。 (责任编辑:admin) |