본문 바로가기
프로그래밍/struts

struts-config.xml 설명

by Super User 2009. 6. 10.

①<form-bean name="login2Form"
   type="strutsguide.forms.Login2Form">
  </form-bean>
     => 이거 설정시 name과 type을 써주는 방법 임의? 디렉토리?

name 의 경우 ③에서와같이 폼빈을 사용할때 사용할 이름을 지정해주는 것임니다.(폼빈의이름)
type의 경우 ActionForm의 클래스를 써주는 것이고 패키지와클래스를 써주면 됩니다.
위의 경우 strutsguide.forms 패키지의 Login2Form.class 를 정해준것입니다.

②<forward name="login2Form" path="/login2/loginForm.do"
   redirect="true" />
 </global-forwards>
=>이거 설정시 name,path지정하는 방법

여기서의 name은 Action에서 사용되는 ActionMapping 에서 찾을 이름을 정해주는 것입니다.
path는 실행할 페이지이거나 실행할 액션을 지정해줍니다. 위에것은 login2Form이라는 이름으로 mapping된것을 찾고 /login2/loginForm.do 를 실행시키게 됩니다. <action-mappings>에 있는 <action path="/login2/loginForm" forward="/login2/loginForm.jsp" /> 가 실행되죠.

③<action path="/login2/login"
   type="strutsguide.actions.Login2Action" name="login2Form"
   validate="true" scope="request" input="/login2/loginForm.jsp">
  </action>
=>이거 설정시 path,type,name,validate,scope,input지정하는 방법

수행할 action을 지정한 것으로 path에는 실행할 url을 나타내고 루트경로를 빼며 .do(서블릿으로 *.do를 매핑시켰다면)를 뺀 나머지 것을 나타내는 것입니다. http://localhost/test/login2/login.do 에서 파란색 부분이 되겠네요 test가 프로젝트 루트라면..
type은 Action class의 경로를 적어주는 것으로 ①번에서와 같이 패키지와 클래스를 지정합니다.
name은 action에서 사용될 액션폼의 이름을 정해주는 것입니다. ①에서 정한 이름입니다.
validate는 액션폼에서 폼채크를 할것인가 말것인가를 정해주는 것으로 true false의 값을 넣어줍니다.

scope는 어느 단에서 쓰일것인가를 정해주는 것입니다. request에서 사용하는 것이네요.
input의 경우 폼채크를 하고 오류 발생시 이동할 페이지를 지정하는 것입니다.

④<forward name="success" path="/login1/logInSuccess.jsp"
    redirect="true" />   =>이거 설정시 path,name,redirect지정하는 방법

액션을 수행하고 이동할 페이지를나타내는 forword 페이지를 정하는 태그로 name에는 Action에서 찾을 이름을 정하는 것입니다.
path는 이동할 페이지를 나타내는 것입니다.
redirect는 페이지 이동시 redirect를 할것인가의 여부를 나타내는 것입니다.

=================================================================================================================

//servlet등록

<servlet>

//서블릿이름 세팅
    <servlet-name>action</servlet-name>

//서블릿의 패키지 클래스명 세팅. ActionServlet은 Struts가 제공하는

//컨트롤러역활을 하는 서블릿클래스입니다.
    <servlet-class>
        org.apache.struts.action.ActionServlet
    </servlet-class>

//서블릿 포기시 파라미터
    <init-param>

//모듈별 struts관련 세팅정보를 담은 xml파일 지정
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>

//WAS구동시 Servlet인스턴스 생성  음수면, 최초 요구시 생성
    <load-on-startup>1</load-on-startup>
</servlet>


//url의 끝에 .do로 시작하면 action이라는 이름의 서블릿에서 처리

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>


 
 
struts-config.xml 안의 내용은
 
<?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
    <struts-config>
//사용하는 폼빈설정 , 폼빈은 스트러츠에서 제공하는 파라미터 정보를 담기위한
//빈즈형식의 클래스입니다.
        <form-beans>
            //폼빈명과, 폼빈의 클래스위치
            <form-bean name="logonForm" type="app.LogonForm"/>
        </form-beans>
//url과 액션정보 맵핑
        <action-mappings>
            //Welcome.do라는 요청이 오면 해당 페이지로 포워딩
            <action path="/Welcome" forward="/pages/Welcome.jsp"/>
            //마찬가지로 해당 url이오면 해당 페이지로 포워딩
            <action path="/Logon" forward="/pages/Logon.jsp"/>
            //LogonSubmit.do라는 요청이 오면, app.LogonAction이라는 클래스를 실행하고,
            //파라미터정보는 logonForm에 담으며, logonForm의 생명주기는 request에 따르고
            //validate를 실행하며(폼빈유효성검증), 검증 실패시 Logon.jsp를 호출
            <action path="/LogonSubmit" type="app.LogonAction" name="logonForm"
                 scope="request" validate="true" input="/pages/Logon.jsp">
                //액션의 리턴메세지가 success일경우 Welcome.jsp포워딩
                <forward name="success" path="/pages/Welcome.jsp"/>
                //액션의 리턴메세지가 success일경우 failure.jsp포워딩

                <forward name="failure" path="/pages/Logon.jsp"/>
            </action>
            <action path="/Logoff" type="app.LogoffAction">
                <forward name="success" path="/pages/Logoff.jsp"/>
            </action>
        </action-mappings>
        //다국어나, 메세징관리를 위한 *.properties 설정
        <message-resources parameter="resources.application"/>
    </struts-config>
 위는 단순한 xml세팅정보입니다.

=============================================================================================================

아래는 Action안에 지정할수 잇는 속성치입니다.

attribute - 액션폼Brean에 액세스할때의 리퀘스트속성 또는 세션 속성의 이름. 이 프로퍼티의 값이 name프로퍼티의 값과 다른 경우 이것이 속성명으로서 사용된다
forward - RequestDispatcher.forward()에 의해 호출되고, module의 상대URI를 지정한다. 이 프로퍼티가 설정되어져 있는 경우 type프로퍼티에서 지정된 액션클래스의 생성이나 호출은 실행되어지지 않는다. forward프로퍼티, include프로퍼티, type프로퍼티중 하나는 반드시 설정해야만 한다.
include - RequestDispatcher.include()에 의해 호출되고, 리퀘스트를 처리하는 서블렛이나 JSP의 컨텍스트의 상대경로 패스이다. 이 프로퍼티가 설정되어진 경우, type프로퍼티에서 지정한 액션클래스의 생성이나 호출은 실행되지 않는다. forward프로퍼티, include프로퍼티, type프로퍼티중 하나는 반드시 설정해야만 한다.
input - 입력체크로 에러가 발생할 때, 이동할 JSP패스를 module의 상대URI로 지정한다. 
name - 액션폼Bean에 액세스할때의 리퀘스트 속성 또는 세션속성의 이름이다.

parameter - 이 애션에 특정의 리퀘스트 파라메타를 넘겨주고 싶을때에 사용하는 설정 파라메터이다.

path - /로 시작하는 설정의 액션패스를 module의 상대 URI로 지정한다.

prefix - 지정한 값과 리퀘스트명의 앞쪽이 일치하는 경우, 액션폼에 세트되어진다. name속성을 지정하고 있는 경우에 유효
roles - 액세스 가능한 롤명을 지정한다. 복수지정할 경우에는 컴마로 구분해서 지정한다.
scope - 액션폼을 취득할 scope를 「request」또는「session」으로 지정한다. 생략할 경우는 「session」이 지정된다
suffix - 지정한 값과 리퀘스트 파라메타명의 뒤쪽이 일치할 경우에 액션폼에 세트되어진다. name속성을 지정하고 있는 경우에 유효

type - 이 설정으로 호출되어질 액션클래스를 지정한다.
            forward프로퍼티, include프로퍼티, type프로퍼티중 하나는 반드시 설정되어야 한다. 

unknown - true로 설정시 해당 액션패스가 action-mapping에서 발견되지 않을 경우, 이 액션이 디폴트 액션으로 지정한다. action-mapping에서 true를 지정할수 있는 것은 하나뿐이다.
validate - validate를 실행할 경우, true를 지정. 생략시는 true.

 

forward는 간단하게 설명드리죠

  <forward name="success" path="/admin/bug_analysis/bug_noxious_03.jsp" />

위와 같은 경우 의 type에서 지정한 Action클래스의 return값이 success일 경우 지정한 path로 이동하라는 뜻입니다.

==============================================================================================================

form-beans 요소

<form-beans>
     <form-bean
           name="loginForm"
    type="org.apache.struts.action.DynaActionForm">
    <form-property name="username" type="java.lang.String"/>
    <form-property name="password" type="java.lang.String"/>
     <form-bean
           name="ShoppingCartForm"
    type="com.oreilly.struts.order.ShoppinCartForm">
</form-beans>
classname=표준 설정 빈인 org.apache.struts.config.FormBeanConfig 클래스를 사용하지 않을때
이 속성에 사용할 클래스를 지정한다. 지정할 클래스는 반드시 FormBeanConfig 를 상속해야 함.

name=빈의 식별자

type=ActionForm 클래스를 상속하는 자바클래스의 전체 이름
만약 이 값을 org.apache.struts.action.DynaActionForm 로 지정하면 스트럿츠가
이 클래스의 인스턴스를 동적으로 생성한다.
org.apache.struts.action.DynaActionForm (동적인 액션 폼)
form-property 요소를 사용하면 org.apache.struts.action.DynaActionForm 클래스의
인스턴스에 동적인 속성을 하나 이상 넘길 수 있다.
form-property 요소
initial=이 속성에서 사용할 초기 값을 지정한다.

name=빈즈의 프로퍼티 이름

type=빈 속성을 구현하는 클래스의 전체 이름 []가 따라오면 배열형을 의미한다.

 

global-exceptions 요소
<global-exceptions>
 <exception
  key="global.error.invalidlogin"
  path="/signin.jsp"
  scope="request"
  type="com.oreilly.struts.framework.exceptions.InvalidLoginException"
</global-exceptions>
handler=예외 처리를 담당할 예외 처리 클래스의 전체 이름. 지정한 클래스는
org.apache.struts.config.ExceptionConfig의 하위 클래스 여야 한다.

key=리소스 번들에 지정된 키 값. ActionError 클래스의 인스턴스에서 이 속성의
값을 사용한다.

path=예외 상황이 발생할 경우 전송해야 할 리소스의 상대 경로. 지정한 값이
없으면 액션 매핑에서 지정하는 input 속성의 값이 사용된다.

scope=ActionError 클래스의 인스턴스를 저장할 스코프. 속성 값은 반드시
request 또는 session이어야 한다. 기본값은 request

type=예외 클래스의 전체 이름

bundle=현재 exception에서 지정한 key 속성이 위치할 리소스 번들을 구별하는
ServletContext 속성


global-forwards 요소
<global-forwards>
 <forward name="Login" path="signin.jsp" redirect="true" />
 <forward name="SystemFailure" path="systemerror.jsp" />
 <forward name="SessionTimeout" path="sessiontimeout.jsp" redirect="true" />
</global-forwards>
contextRelative=true로 지정할 경우 path 속성에 지정된 리소스를 컨텍스트
상대 경로로 인식한다. 이 속성은 다른 하위 애플리케이션에 속한 path 속성에
지정된 리소스들의 경우를 위해 사용된다. 기본값은 false

name=이 포워드 정보를 참조하기 위한 유일한 값

path=포워드 되거나, 리다이렉트되어야 할 애플리케이션의 상대 경로

redirect=true일 경우 리다이렉트, 기본값은 포워드


action-mappings 요소

<action
    path="/login"
    type="com.oreilly.struts.banking.action.LoginAction"
    scope="request"
    name="loginForm"
    validate="true"
    input="/login.jsp">
    <forward name="success"
                  path="/index.jsp"
                  redirect="true" />
    <forward name="failure"
                  path="/signin.jsp"
                  redirect="true" />
</action>
 
path = 요청과 관련된 애플리케이션 상대 경로

type = Action 클래스를 상속하는 자바 클래스의 전체 이름, excute() 메소드를 실행하게 된다.

scope = 폼빈의 스코프, 요청 혹은 세션 값이 된다. name 속성을 지정한 경우에만 사용가능,
기본 값은 session 이다.

name = 액션과 연결된 폼 빈의 이름

validate = 폼빈즈의 validate() 메소드가 action의 excute() 메소드 전에 호출되어야 하는지 나타낸다.
기본 값은 true

input =  폼빈에서 검증 에러가 발생했을 경우 되돌아갈 자원의 이름, name 속성을 지정한 경우만 사용

attribute=이 action이 접근할 수 있는 요청 혹은 세션 스코프의 폼 빈 이름. 이 속성의 값은 name 속성에
폼빈이 지정되어 있을 경우에만 사용할 수 있다.

forward=포워드 될 서블릿이나 jsp의 상대경로.

include=클라이언트의 요청에 대해 포함해야 할 서블릿이나 jsp 자원의 상대 경로

parameter=action 인스턴스에 정보를 넘기기 위해 사용

prefix=요청 파라미터의 이름을 폼 빈의 속성 이름과 일치시키기 위해 사용한다.

roles=이 Action의 호출을 허용할 보안 처리자 이름들의 리스트

suffix=요청 파라미터의 이름을 폼 빈의 속성 이름과 일치시키기 위해 사용한다.

unknown=이 액션은 애플리케이션에서 기본으로 설정해야 하는지 여부를 표시한다. 오직 한 액션만을

true로 지정할 수 있다. 이 속성은 사용자가 유효하지 않은 url를 처리하는 작업을 할 수도 있을것이다.

 

controller 요소
(사용자 요청 처리는 RequestProcessor 클래스의 인스턴스에 위임하여,
요청을 처리하는 클래스를 할당하고 기능을 수정할 수 있다.
컨트롤러 서블릿을 위해  web.xml에서 설정했던 많은 매개 변수를 controller 요소에
설정할수 있다. 컨트롤러와 그 속성들이 struts-config.xml에 정의되었기때문에
각각의 하위 애플리케이션을 위해 분리된 controller 요소를 정의할 수 있다.)
<controller
 contentType="text/html;charset=UTF-8"
 debug="3"
 locale="true"
 nocache="true"
 processorClass="com.oreilly.struts.framework.CustomRequestProcessor" />
bufferSize=파일 업로드 시 사용하는 입력 버퍼의 크기.

contentType=응답결과를 보낼 때 사용하는 컨텐트 타입. 여기서 지정한 값이 있더라도,
jsp 페이지에서 지정한 값이 우선한다.

debug=현재 애플리케이션의 디버깅 레벨. 값이 클수록 더 많은 로깅 정보들이 축적된다.
값이 0이라면 로깅 정보를 전혀 기록하지 않겠다는 의미이다.

forwardPattern=/로 시작하는 (contextRelative 속성이 true일 경우) 상대 컨텍스트
경로에 forward 요소의 path 속성이 어떻게 매핑되는지에 대한 대체 패턴

inputForward=만일 action 요소의 input 파라미터를 최종 URL 로 사용할 로컬 또는
전역 forward 요소의 이름이길 워한다면 true 로 설정한다.

locale=사용자의 지역정보를 사용자 세션에 저장할지 여부. 기본값은 false

maxFileSize=파일 업로드시 파일의 최대 용량. 기본값은 250메가
숫자 뒤에 K, M, G를 붙여서 표현한다.

multipartClass=MultiPart 요청에 대한 처리를 담당하는 클래스의 전체 이름

nocache=사용자에 대한 모든 응답 처리에서 HTTP 헤더를 'nocache'로 설정할 지의 여부

pagePattern=커스텀 태그를 사용하는 페이지의 page속성이 컨텍스트 상대 URL 경로
에 매핑 방법에 대한 대체 패턴

processorClass=사용자의 요청을 처리할 클래스의 전체 이름

tempDir=파일 업로드 시 사용할 임시 디렉토리. 이 속성은 선택적으로 사용할 수 있다.
컨테이너는 기본 값을 각각의 웹 애플리케이션에 할당한다.


message-resources 요소
<message-resources
 null="false"
 parameter="StorefrontMessageResources" />
<message-resources
 key="IMAGE_RESOURCE_KEY"
 null="false"
 parameter="StorefrontMessageResources" />
factory=사용할 MessageResourcesFactory 클래스의 전체 클래스 이름

key=메시지 리소스 번들이 저장될 서블릿 컨텍스트 속성.
기본값은 Action.MESSAGES_KEY 에 의해 지정된다. 기본 번들로 리소스 번들
하나만 지정된다.

null=정의 되지 않은 메시지 키가 사용된 경우 이를 MessageResources의 하위
클래스에서 어떻게 처리할지 나타내는 boolean 값. true로 지정하는 빈 문자열을
리턴한다. false로 설정하면 "??global.label.missing??"과 같은 문자열을 리턴.

parameter=리소스 번들의 이름. 예를 들어 번들 파일 이름이
AppicationResources.properties이면, 이 속성의 값은 AppicationResources이다.
만일 리소스 번들이 패키지 화 되어 있다면 해당 패키지의 이름을 포함한
전체 이름을 지정해야 한다.


plug-in 요소
(지정한 클래스의 인스턴스는 각각의 플로그인 요소에 의해 생성되며, init() 메소드는
애플리케이션이 구동될때 그리고 destory() 메소드는 애플리케이션이 정지할 때 호출된다.)
<plug-in className="com.oreilly.struts.storfront.service.StoreFrontServiceFactory" />
<plug-in className="com.oreilly.struts.storfront.service.StoreFrontServiceFactory" >
 <set-property
  property="pathnames"
  value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml" />
</plug-in>


==================================================================================================

아직 정확히 파악을 못하겠다.. 일단 파악해본 바로는 다음과 같다.

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<!--
  Default configuration file for examples application.
  Each module also has its own struts-config under: /WEB-INF/$MODULE/
  @version $Revision: 1.9 $ $Date: 2004/09/07 02:50:06 $
-->
<struts-config>
 <!-- ======================= Data Source Configuration ===========================-->            //이렇게 설정을 하니 db와 통신을 한다..ㅋㅋ 좋다..
    <data-sources>   //파란색 부분은 자신의 사양에 맞게 설정해줄것
        <data-source key="MySQL-ibisti" type="org.apache.commons.dbcp.BasicDataSource">
            <set-property property="driverClassName" value="org.gjt.mm.mysql.Driver" />
            <set-property property="description" value="MySQL main application" />
            <set-property property="url" value="jdbc:mysql://localhost:3306/companymanage" />
            <set-property property="username" value="root" />
            <set-property property="password" value="" />
            <set-property property="maxActive" value="10" />
            <set-property property="maxWait" value="5000" />
            <set-property property="defaultAutoCommit" value="false" />
            <set-property property="defaultReadOnly" value="false" />
        </data-source>       
    </data-sources>
   
    <!-- ===================== Form Bean Definitions ===================== -->
    <form-beans>
     <form-bean name="loginForm" type="com.ibisti.login.LoginForm" />
     //폼빈을 가져올때 사용할 이름.   //그 폼빈에 사용되어질 클래스의 위치
     <form-bean name="logoutForm" type="com.ibisti.login.LoginForm" />
    
     <form-bean name="employeeForm" type="com.ibisti.employee.EmployeeForm" />
    
     <form-bean name="employeeListForm" type="com.ibisti.employee.EmployeeListForm" />
    
     <form-bean name="codeManagerForm" type="com.ibisti.manager.code.CodeManagerForm" />
    </form-beans>
   
    <!-- ===================== Global Forward Definitions ===================== -->

    //전역적으로 사용할 포워딩
    <!--<global-forwards />-->
    <global-forwards type="org.apache.struts.action.ActionForward">
        <forward name="mainpage" path="/main.jsp" />
        <forward name="loginForm" path="/login.jsp" redirect="true" />
        <forward name="error" path="/error.jsp"></forward>
    </global-forwards>
   
    <!-- ===================== Action Mapping Definitions ===================== -->
    <action-mappings>
        <action path="/Login"    //로컬 컨택스트 밑의 주소에 Login이라고 들어오면
            type="com.ibisti.login.LoginAction"   //해당클래스를 참고하여 비즈니스 로직을 행하고,
            name="loginForm"                 //해당하는 이름의 bean에 값을 담아주어서
            scope="request"  //폼빈을 유지하고 있는 그릇의 크기라고 보자.

            input="/login.jsp"  //입력 파라미터의 검증으로 에러가 발생했을 때에 , 제어를 되돌리는

                                      // 입력 폼의 문맥 상대 패스입니다
            validate="true">  //이 매핑과 관련지을 수 있고 있는 액션 폼Bean이 존재할 때 ,
                                    //그validate()메소드를 호출한다면 ,true을 세트 합니다.
        </action>
/**  그밖의 속성.       

unknown

이 매핑을 , 다른 매핑에 의해 처리되지 않는 리퀘스트를 처리하기 위한 어플리케이션의 디폴트의 매핑으로서 설정하는 경우에true를 세트 합니다. 하나의 어플리케이션에 대해 , 하나의 매핑만을 디폴트로서 지정할 수가 있습니다.

attribute

   actionForm Bean에 액세스 할 때의 Request 속성 또는 Session 속성의 이름입니다.
   이 속성값이 name 속성의 값과 다른 경우 , 이쪽이 속성명으로서 사용됩니다.

forward

  RequestDispatcher.forward()에 의해 불려 가 Request를 처리하는 Servlet 또는 JSP의 문맥 상대 패스입니다. 이 속성이  설정되어 있는 경우 ,type 속성으로 로 지정한 액션 클래스의 생성이나 호출은 실행되지 않습니다.
  ex) <action path="/toSample3" forward="/sample3.jsp" type="XXXAction" name="testForm" scope="request">
forward속성 ,include속성,type속성의 쳐 어느쪽이든 하나는 반드시 설정할 필요가 있습니다.

include

  RequestDispatcher.include()에 의해 불려 가 Request를  처리하는 Servlet이나JSP의 문맥 상대 패스입니다. 이 속성이 설정되어 있는 경우 ,type 속성으로 지정한 액션 클래스의 생성이나 호출은 실행되지 않습니다.
forward속성 ,include속성 ,type속성의 쳐 어느쪽이든 하나는 반드시 설정할 필요가 있습니다.    


parameter

이ActionMapping에 의해 선택되는 것Action에 특별한 정보를 건네주고 싶을 때에 사용할 수 있는 범용적인 설정 파라미터입니다.

prefix

액션 폼Bean의 속성명과 Request 파라미터명의 매칭에 사용하는 Prefix 입니다.

suffix

액션 폼Bean의 속성명과 request 파라미터명의 매칭에 사용하는 suffix입니다.

**/
        <action path="/Logout"
            type="com.ibisti.login.LoginAction"
            name="logoutForm"
            scope="request"
            input="/menu.jsp"
            validate="true">
        </action>
       
        <action path="/EmployeeList"
            type="com.ibisti.employee.EmployeeAction"
            name="employeeListForm"
            scope="request"
            input="/employeeInput.jsp"
            validate="false">
         <forward name="list" path="/employeeList.jsp" />
         <forward name="failure" path="/employeeInput.jsp" />
        </action>

    </action-mappings>
    <controller processorClass="com.ibisti.common.util.BaseRequestProcessor" locale="true">
    </controller>
   
    <!-- ===================== controller Configuration ===================== -->
    <!--<controller />-->
   
    <!-- ===================== message-resources Configuration ===================== -->
    <message-resources parameter="MessageResources" /> 
   
    <!-- ===================== ValidatorPlugIn Configuration ===================== -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml" />
        <!--<set-property property="stopOnFirstError" value="false" />-->
    </plug-in>

</struts-config>

 

이글은http://blog.naver.com/btchae/80021690578 를 참조했습니다.

'프로그래밍 > struts' 카테고리의 다른 글

스트럿츠 validate 사용시 CheckBox 폼 받기  (0) 2009.06.10
struts 커스텀 태그  (0) 2009.06.10
배열 받아오기 및 저장 (iterator)  (0) 2009.06.10
html:select  (0) 2009.06.10
web.xml  (0) 2009.06.10