on the road

working hard

 
 Blog首页我的首页 我的文章我的像册我的圈子后台管理给我留言聚合
当前位置:首页-on the road->文章内容
easyjf-web配置文件DTD
评论数(1) 阅读次数(124)发布时间:2006-11-29 21:58
今天做作业,写DTD和schema,继续学习了下,把easyjweb的配置文件easyj-web.xml的DTD练习了下,有不正确的地方请各位指出,明天会贴出schema。

<?xml version="1.0" encoding="UTF-8"?>
<!--easyjweb 0.5版本dtd文档-->
<!ELEMENT easyjf-web (frame-setting?,modules?,forms?)>

<!--框架配置选项-->
<!ELEMENT frame-setting (template-base?,init-app?,interceptors?,property*)>

<!-- 定义模版文件的根目录,默认为WEB-INF/easyjweb/ -->
<!ELEMENT template-base (#PCDATA)>

<!-- 定义在初始化框架的时候需要运行的类 -->
<!ELEMENT init-app (app-class*) >

<!--该标签有3个属性,
class里面应该是要启动的类的完整类名,
init-method表示的是该类的启动方法,com.easyjf.web
destroy-method表示的是在应用结束后使用来清理该类的方法,比如释放一些资源等操作
class属性是必须具有的
init-method也是必须要有的
-->
<!ATTLIST app-class class CDATA #REQUIRED >
<!ATTLIST app-class init-method CDATA #REQUIRED>
<!ATTLIST app-class  destroy-method CDATA #IMPLIED>

<!-- 该标签是定义了应用的拦截器,在这里定义的拦截器是拦截request请求并进行拦截连的处理,
在这里定义的拦截器必须实现com.easyjf.web.IRequestInterceptor接口
-->
<!ELEMENT interceptors (app-class*) >

<!-- 该标签申明了request拦截器,
name属性是制定该拦截器的名字
app-class内容指名拦截器类的完整类名
-->
<!ELEMENT app-class (#PCDATA)>
<!ATTLIST app-class name CDATA #IMPLIED>

<!-- 该标签是定义框架的参数,只能有三种参数选择:
com.easyjweb.debug:是否让框架处于debug模式,如果在该模式下,每次请求都会导致框架的重新初始化,取值有true,false
com.easyjweb.maxUploadFileSize:上传文件的最大值,KB;
com.easyjweb.uploadSizeThreshold:上传文件的个数
-->

<!ELEMENT property (#PCDATA) >
<!ATTLIST property name (com.easyjweb.debug|com.easyjweb.maxUploadFileSize|com.easyjweb.uploadSizeThreshold) #REQUIRED>
 
<!--定义模块-->
<!ELEMENT modules (module*) >

<!-- 定义模块
name 模块的名字,
path 请求映射到该模块的路径
form 该模块对应的表单form
scope
action 用于处理请求的action类
defaultPage 没有指名视图名时返回的页面
inteceptor 定义的模块拦截器,该拦截器链上的拦截器会在请求到达action之前和之后运行,必须实现com.easyjf.web.IActionInterceptor接口
page 定义该模块里的视图或者模版
-->
<!ELEMENT module (inteceptor*,page*) >

<!-- 定义action拦截器,class为该拦截器类的完整类名 -->
<!ELEMENT inteceptor EMPTY>
<!ATTLIST inteceptor class CDATA #REQUIRED>


<!-- 定义视图或者模版
name 视图或者模版的名字,在action中可以直接使用module.findPage(name)来定位视图;
  在现在的版本中,视图可以不需要这样配置,即可在默认的位置上寻找
url 视图或者模版的位置,这里的位置是相对于template-base而言的
type 类型,有两种类型,template是模版类型,会由框架经过render生成,html是页面,会直接跳转,默认为模版类型
-->
<!ELEMENT page EMPTY>
<!ATTLIST page name CDATA #REQUIRED>
<!ATTLIST page url CDATA #REQUIRED>
<!ATTLIST page type (template|html) "template" >

<!-- 定义表单form 类似于struts的ActionForm-->
<!ELEMENT forms (form*) >

<!-- 定义表单的属性
name 表单form的名字
bean 用来保存表单内容的form的完整类名
event
clientValidate 验证策略,客户端是否验证
serverValidate 验证策略,服务器端是否验证
alertType 验证失败提示策略
-->
<!ELEMENT form (attribute*) >
<!ATTLIST form name CDATA #REQUIRED>
<!ATTLIST form bean CDATA #REQUIRED>
<!ATTLIST form event CDATA #IMPLIED>
<!ATTLIST form clientValidate (yes|no) #REQUIRED>
<!ATTLIST form serverValidate (yes|no) #REQUIRED>
<!ATTLIST form alertType (javascript:page) #IMPLIED>

<!-- 用来表示表单各字段的属性
name 字段名字,同表单字段的name
size 字段长度,用于验证
type 字段的类型,是java的有效的类型,用于验证
notNull 字段是否为空,用于验证
initial 字段的默认值,如果表单中该字段为空,则使用该值
event
-->
<!ELEMENT attribute EMPTY>
<!ATTLIST attribute name CDATA #REQUIRED>
<!ATTLIST attribute size CDATA #IMPLIED>
<!ATTLIST attribute type CDATA #REQUIRED>
<!ATTLIST attribute notNull (yes|no) #REQUIRED>
<!ATTLIST attribute initial CDATA #IMPLIED>
<!ATTLIST attribute event CDATA #IMPLIED>

在写这个DTD的时候,遇到了property重名的问题,网上搜了下,意思是在一个文件中,最好不要定义相同名字不同性质的标签(http://www-128.ibm.com/developerworks/cn/xml/x-cert/part2/index.html

所以我在这个DTD中,把form中的property属性名改成attribute了,望继续讨论

 

 
 
 【评论】 【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   

 
Aboutus | 联系我们 | 程序开发 | 网站地图 | 留言板
Copyright (C) 2005 EasyJF.com, All Rights Reserved
版权所有 简易java框架网
渝ICP备06004507 如有意见请与我们联系 Powered by EasyJFramework