struts-2.1.7包含DTD学习

<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* $Id: struts-2.0.dtd 651946 2008-04-27 13:41:38Z apetrelli $
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
*
http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
-->
<!-- START SNIPPET: strutsDtd -->

<!--
Struts configuration DTD.
Use the following DOCTYPE

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"
http://struts.apache.org/dtds/struts-2.1.7.dtd">
-->
<!--
<!ATTLIST 元素名称 属性名称 属性类型 默认值>

以下是属性类型的选项
类型 描述
CDATA 值为字符数据(character data)
(en1|en2|..) 此值是枚举列表中的一个值
ID 值为唯一的id
IDREF 值为另外一个元素的id
IDREFS 值为其他id的列表
NMTOKEN 值为合法的XML名称
NMTOKENS 值为合法的XML名称列表
ENTITY 值是一个实体
ENTITYS 值是一个实体列表
NOTATION 此值是符号的名称
xml 值是一个预定义的XML值

默认值参数可使用下列值:
值 解释
#REQUIRED 属性值是必须的
#IMPLIED 属性值不是必须的
#FIXED value 属性值是固定的
-->
<!--
DTD声明一个元素
<!ELEMENT 元素名称 类别> 或者 <!ELEMENT 元素名称(元素内容)>
空元素
<!ELEMENT 元素名称 EMPTY>
只有 PCDATA 的元素
<!ELEMENT 元素名称 (#PCDATA)>
带有任何内容的元素
<!ELEMENT 元素名称 ANY>
带有子元素(序列)的元素
<!ELEMENT 元素名称 (子元素名称 1)>
或者 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
声明只出现一次的元素
<!ELEMENT 元素名称 (子元素名称)>
声明最少出现一次的元素 +
<!ELEMENT 元素名称 (子元素名称+)>
声明出现零次或多次的元素 *
<!ELEMENT 元素名称 (子元素名称*)>
声明出现零次或一次的元素 ?
<!ELEMENT 元素名称 (子元素名称?)>
声明“非.../既...”类型的内容
<!ELEMENT note (to,from,header,(message|body))>
上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
-->


<!ELEMENT struts ((package|include|bean|constant)*, unknown-handler-stack?)>
<!ATTLIST struts
order CDATA #IMPLIED
>

<!ELEMENT package (result-types?, interceptors?, default-interceptor-ref?, default-action-ref?, default-class-ref?, global-results?, global-exception-mappings?, action*)>
<!ATTLIST package
name CDATA #REQUIRED
extends CDATA #IMPLIED
namespace CDATA #IMPLIED
abstract CDATA #IMPLIED
externalReferenceResolver NMTOKEN #IMPLIED
>

<!--

用于管理Action和拦截器等,给个包就是name属性,每个包就是多个Action,多个拦截器的,多个拦截器引用的集合.

name:必填属性,指定该包的名字,该名字是该包被其它包引用的key.

extends:可选属性,指定该包继承其他包。继承其他包,可以继承其他包中的Action定义、拦截器定义等。

namespace:可选属性,定义该包的命名空间。

abstract:可选属性,指定该包是否是一个抽象包。抽象包不能包含Action定义。

命名空间配置:

用来管理Action。同一个命名空间里不能有同名的Action,不同的命名空间里可以有同名的Action。

如果包没有指定namespace属性,即该包使用默认的命名空间,则默认的命名空间总是""。

当包指定了命名空间后,该包下所有Action处理的URL应该是命名空间+Action名。

还可以显示指定根命名空间,通过设置某个包的namespace="/"来指定根命名空间。

-->

<!ELEMENT result-types (result-type+)>

<!ELEMENT result-type (param*)>
<!ATTLIST result-type
name CDATA #REQUIRED
class CDATA #REQUIRED
default (true|false) "false"
>
<!--
<result-type.../>元素定义一个结果类型。
name:属性指定了该结果类型的名字。
class:属性指定了该结果类型的实现类
归纳起来,Struts2内建支持结果类型如下:
chain:Action链式处理的结果类型。
chart:用于整合JFreeChart的结果类型。
dispatcher:用于整合JSP的结果类型。(默认的类型)
freemarker:用于整合FreeMarker的结果类型。
httpheader:用于控制特殊的HTTP行为的结果类型。
jasper:用于整合JasperReports的结果类型。
jsf:用于整合JSF的结果类型。
redirect:用于直接跳转到其他URL的结果类型。
redirect-action:用于直接跳转到其他Action的结果类型。
stream:用于向浏览器返回一个InputStream(一般用于文件下载)。
titles:用于整合Tiles的结果类型。
velocity:用于整合Velocity的结果类型。
xslt:用于整合XML/XSLT的结果类型。
plaintext:用于显示某个页面的原始代码的结果类型.
-->

<!ELEMENT interceptors (interceptor|interceptor-stack)+>

<!ELEMENT interceptor (param*)>
<!ATTLIST interceptor
name CDATA #REQUIRED
class CDATA #REQUIRED
>

<!ELEMENT interceptor-stack (interceptor-ref*)>
<!ATTLIST interceptor-stack
name CDATA #REQUIRED
>

<!ELEMENT interceptor-ref (param*)>
<!ATTLIST interceptor-ref
name CDATA #REQUIRED
>

<!ELEMENT default-interceptor-ref (#PCDATA)>
<!ATTLIST default-interceptor-ref
name CDATA #REQUIRED
>

<!ELEMENT default-action-ref (#PCDATA)>
<!ATTLIST default-action-ref
name CDATA #REQUIRED
>

<!ELEMENT default-class-ref (#PCDATA)>
<!ATTLIST default-class-ref
class CDATA #REQUIRED
>

<!ELEMENT global-results (result+)>

<!ELEMENT global-exception-mappings (exception-mapping+)>

<!ELEMENT action (param|result|interceptor-ref|exception-mapping)*>
<!ATTLIST action
name CDATA #REQUIRED
class CDATA #IMPLIED
method CDATA #IMPLIED
converter CDATA #IMPLIED
>

<!ELEMENT param (#PCDATA)>
<!ATTLIST param
name CDATA #REQUIRED
>

<!ELEMENT result (#PCDATA|param)*>
<!ATTLIST result
name CDATA #IMPLIED
type CDATA #IMPLIED
>

<!ELEMENT exception-mapping (#PCDATA|param)*>
<!ATTLIST exception-mapping
name CDATA #IMPLIED
exception CDATA #REQUIRED
result CDATA #REQUIRED
>

<!ELEMENT include (#PCDATA)>
<!ATTLIST include
file CDATA #REQUIRED
>

<!--

当通过多个struts.xml文件来配置Action,但struts2默认只加载WEB-INF/classes下的struts.xml文件。通过<include.../>元素可以实现以上需求。

file:指定被包含配置文件的文件名。

-->

<!ELEMENT bean (#PCDATA)>
<!ATTLIST bean
type CDATA #IMPLIED
name CDATA #IMPLIED
class CDATA #REQUIRED
scope CDATA #IMPLIED
static CDATA #IMPLIED
optional CDATA #IMPLIED
>
<!--
bean属性:
class: 必填属性,它指定了Bean实例的实现类
type: 可选属性,它指定了实例实现的Struts2规范,该规范通常是通过某个接口来实现的,
因此该属性的值通常是一个Struts2接口。如果需要将Bean实例作为Struts2组件
来使用,则应该指定该属性值。
name: 该属性指定了Bean实例的名字,对于相同type类型的多个Bean,
则它们的name属性不能相同。这个属性也是一个可选属性。
scope: 该属性指定Bean实例的作用域。该属性是个可选属性,
属性值只能是default、singleton、request、session或thread其中之一。
static: 该属性指定Bean是否使用静态方法注入。通常而言,指定了type属性时,该属性不应该指定为true。
optional:该属性指定该Bean是否是一个可选Bean,该属性是一个可选属性。
-->

<!ELEMENT constant (#PCDATA)>
<!ATTLIST constant
name CDATA #REQUIRED
value CDATA #REQUIRED
>

<!--

constant:用于配置常量

name:指定常量name

value:指定常量value

作用相当于配置struts.properties

-->

<!ELEMENT unknown-handler-stack (unknown-handler-ref*)>
<!ELEMENT unknown-handler-ref (#PCDATA)>
<!ATTLIST unknown-handler-ref
name CDATA #REQUIRED
>

<!-- END SNIPPET: strutsDtd -->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值