default namespace r = "http://caucho.com/ns/resin"
namespace l = ""
include "../resin/env.rnc"
include "../resin/resin-j2ee.rnc"
include "web-xml.rnc"
start = m_web-app
m_web-app = r_web-app | j2ee_web-app | l_web-app
## l_web-app should probably be handled in web-xml.rnc as Servlet 2.3
l_web-app = element l:web-app { resin_any }
r_boolean = string
r_int = string
r_period = string
r_jndi = string
r_class-Type = string
r_kbytes = string
r_access-log = element access-log {
r_resin-type?
& r_log-Content
& (attribute format { string } | element format { string })?
& (attribute archive-format { string } | element archive-format { string })?
& r_init?
}
r_auth-constraint = element auth-constraint {
r_description*,
r_role-name*
}
r_cache-mapping = element cache-mapping {
r_url-pattern
& (attribute expires { r_period } | element expires { r_period })
}
r_constraint = element constraint {
r_resin-type,
resin_any
}
r_config-file =
attribute config-file { string }
| element config-file { string }
r_context-param = element context-param {
r_init-param-Content
}
## marks the web-app as distributable
r_distributable =
attribute distributable { string }
| element distributable { string }
r_ear-default = element ear-default {
class-loader?,
(resin_env
& r_config-file*
)
}
r_ear-deploy = element ear-deploy {
(attribute url-prefix { string } | element url-prefix { string })?
& (attribute path { r_path } | element path { r_path })
& (attribute expand-path { r_path } | element expand-path { r_path })?
& r_lazy-init?
& r_ear-default?
}
r_error-page = element error-page {
(attribute error-code { string }
| element error-code { string }
| attribute exception-type { string }
| element exception-type { string })?,
(attribute location { string } | element location { string })
}
r_filter = element filter {
r_description?,
r_display-name?,
r_icon*,
(attribute filter-name { string } | element filter-name { string }),
(attribute filter-class { r_class-Type }
| element filter-class { r_class-Type }),
(r_init | r_init-param*),
r_deployment-extension*
}
r_filter-mapping = element filter-mapping {
(r_url-pattern
| attribute url-regexp { string } | element url-regexp { string }
| attribute servlet-name { string } | element servlet-name { string }),
(attribute filter-name { string } | element filter-name { string }),
(attribute dispatcher { string} | element dispatcher { string }*)
}
r_form-login-config = element form-login-config {
(attribute form-login-page { string } | element form-login-page { string }),
(attribute form-error-page { string } | element form-error-page { string }),
(attribute internal-forward { r_boolean }
| element internal-forward { r_boolean })?,
(attribute form-uri-priority { r_boolean }
| element form-uri-priority { r_boolean })?
}
r_init-param-Content =
r_description*,
(((attribute param-name { string } | element param-name { string }),
(attribute param-value { string } | element param-value { string }))
| attribute * { string }
| element * - (param-name | param-value | r_description) { string })*
r_init-param = element init-param {
r_init-param-Content
}
r_jdbc-store = element jdbc-store {
(attribute data-source { r_jndi } | element data-source { r_jndi })
& (attribute table-name { string } | element table-name { string })?
& (attribute blob-type { string } | element blob-type { string })?
& (attribute max-idle-time { r_period }
| element max-idle-time { r_period })?
}
r_jsp = element jsp {
(attribute auto-compile { r_boolean } | element auto-comple { r_boolean })?
& (attribute el-ignored { r_boolean } | element el-ignored { r_boolean })?
& (attribute fast-jstl { r_boolean } | element fast-jstl { r_boolean })?
& (attribute ide-hack { r_boolean } | element ide-hack { r_boolean })?
& (attribute ignore-el-exception { r_boolean }
| element ignore-el-exception { r_boolean })?
& (attribute is-xml { r_boolean } | element is-xml { r_boolean })?
& (attribute jsp-max { r_int }
| element jsp-max { r_int })?
& (attribute page-encoding { string } | element page-encoding { string })?
& (attribute precompile { r_boolean } | element precompile { r_boolean })?
& (attribute recompile-on-error { r_boolean } |
element recompile-on-error { r_boolean })?
& (attribute recycle-tags { r_boolean } |
element recycle-tags { r_boolean })?
& (attribute require-source { r_boolean } |
element require-source { r_boolean })?
& (attribute scripting-invalid { r_boolean } |
element scripting-invalid { r_boolean })?
& (attribute session { r_boolean } |
element session { r_boolean })?
& (attribute tld-dir { r_boolean } |
element tld-dir { r_boolean })?
& (attribute velocity-enabled { r_boolean } |
element velocity-enabled { r_boolean })?
}
r_jsp-config = element jsp-config {
attribute id { string }?,
r_taglib*,
r_jsp-property-group*
}
r_jsp-property-group = element jsp-property-group {
attribute id { string }?,
r_description-Group,
r_url-pattern*,
element el-ignored { j2ee_boolean }?,
element page-encoding { j2ee_string }?,
element scripting-invalid { j2ee_boolean }?,
element is-xml { j2ee_boolean }?,
element include-prelude { j2ee_path }*,
element include-coda { j2ee_path }*
}
r_lazy-init =
attribute lazy-init { r_boolean }
| element lazy-init { r_boolean }
r_listener = element listener {
r_description?,
r_display-name?,
r_icon?,
(attribute listener-class { string } | element listener-class { string }),
r_init?
}
r_login-config = element login-config {
r_type?,
(attribute auth-method { string } | element auth-method { string })?,
(attribute realm-name { string } | element realm-name { string })?,
r_form-login-config?,
(attribute authenticator { r_jndi } | element authenticator { r_jndi })?,
r_init?
}
r_http-method-Values =
"GET"
| "POST"
| "PUT"
| "DELETE"
| "HEAD"
| "OPTIONS"
| "TRACE"
r_http-method =
attribute http-method { r_http-method-Values } |
element http-method { r_http-method-Values }
r_ip-constraint =
(attribute ip-constraint { string } | element ip-constraint { string })
r_mime-mapping = element mime-mapping {
(attribute extension { string } | element extension { string }),
(attribute mime-type { string } | element mime-type { string })
}
r_multipart-form = element multipart-form {
(attribute enable { r_boolean } | element upload-max { r_boolean })?
& (attribute upload-max { r_kbytes } | element upload-max { r_kbytes })?
}
## this doesn't exist in servlet spec?
r_path-mapping = element path-mapping {
(r_url-pattern
| attribute url-regexp { string } | element url-regexp { string })
& (attribute real-path { r_path } | element real-path { r_path })
}
r_persistent_store =
(attribute persistent-store { string } | element persistent-store { string })
r_run-at =
attribute run-at { string }
| element run-at {
string
| (attribute period { string } | element period { string })
}
r_secure =
attribute secure { r_boolean }
| element secure { r_boolean }
r_security-constraint =
element security-constraint {
(r_display-name?,
r_web-resource-collection*,
(r_auth-constraint*
& r_user-data-constraint*
& r_ip-constraint*
& r_constraint*))
| (r_url-pattern, r_role-name*)
}
r_servlet = element servlet {
r_description?,
r_display-name?,
r_icon*,
r_servlet-name,
r_servlet-Content
}
r_servlet-Content =
((attribute servlet-class { string } | element servlet-class { string }
| attribute jsp-file { string } | element jsp-file { string }),
(r_init | r_init-param*)?,
(attribute load-on-startup { string }
| element load-on-startup { string })?,
element run-as { string }?,
element security-role-ref { string }*,
r_run-at?)
r_servlet-mapping = element servlet-mapping {
(r_url-pattern
| attribute url-regexp { string } | element url-regexp { string }),
(r_servlet-name
| (r_servlet-name?, r_servlet-Content))
}
r_servlet-name =
attribute servlet-name { string } | element servlet-name { string }
r_session-config = element session-config {
(attribute always-load-session { r_boolean }
| element always-load-session { r_boolean })?
& (attribute always-save-session { r_boolean }
| element always-save-session { r_boolean })?
& (attribute cookie-domain { string }
| element cookie-domain { string })?
& (attribute cookie-length { r_int }
| element cookie-length { r_int })?
& (attribute cookie-max-age { r_period }
| element cookie-max-age { r_period })?
& (attribute cookie-secure { r_boolean }
| element cookie-secure { r_boolean })?
& (attribute cookie-version { r_int } | element cookie-version { r_int })?
& (attribute enable-cookies { r_boolean }
| element enable-cookies { r_boolean })?
& (attribute enable-url-rewriting { r_boolean }
| element enable-url-rewriting { r_boolean })?
& (attribute ignore-serialization-errors { r_boolean }
| element ignore-serialization-errors { r_boolean })?
& (attribute invalidate-after-listener { r_boolean }
| element invalidate-after-listener { r_boolean })?
& (attribute persistent-path { r_path }
| element persistent-path { r_path })?
& (attribute reuse-session-id { r_boolean }
| element reuse-session-id { r_boolean })?
& (attribute save-on-shutdown { r_boolean }
| element save-on-shutdown { r_boolean })?
& (attribute session-max { r_int }
| element session-max { r_int })?
& (attribute session-timeout { r_int }
| element session-timeout { r_int })?
& (attribute cluster-store { string }
| element cluster-store { empty })?
& r_persistent_store?
}
r_strict-mapping =
attribute strict-mapping { r_boolean }
| element strict-mapping { r_boolean }
r_taglib = element taglib {
(attribute taglib-uri { string } | element taglib-uri { string }),
(attribute taglib-location { string } | element taglib-location { string })
}
r_transport-guarantee =
attribute transport-guarantee { r_transport-guarantee-Values }
| element transport-guarantee { r_transport-guarantee-Values }
r_transport-guarantee-Values = "NONE" | "INTEGRAL" | "CONFIDENTIAL"
r_url-pattern =
attribute url-pattern { string }
| element url-pattern { string }
r_user-data-constraint = element user-data-constraint {
r_description*,
r_transport-guarantee
}
r_web-app-deploy = element web-app-deploy {
(attribute url-prefix { string } | element url-prefix { string })?
& (attribute path { r_path } | element path { r_path })
& (attribute expand-path { r_path } | element expand-path { r_path })?
& r_lazy-init?
}
r_web-app-Content =
class-loader?,
(resin_env
& r_access-log*
& r_cache-mapping*
& r_config-file*
& r_context-param*
& r_display-name*
& r_distributable?
& r_ear-deploy*
& r_ejb-local-ref*
& r_ejb-ref*
& r_error-page*
& r_filter*
& r_filter-mapping*
& r_jsp?
& r_jsp-config*
& r_lazy-init*
& r_listener*
& r_login-config?
& r_message-destination*
& r_mime-mapping*
& r_multipart-form*
& r_resource-env-ref*
& r_secure?
& r_security-constraint*
& r_security-role*
& r_servlet*
& r_servlet-mapping*
& r_session-config*
& r_strict-mapping?
& r_taglib*
& r_path-mapping*
& r_web-app-deploy*
& r_welcome-file-list?)
r_web-app = element web-app {
attribute version { string }?,
attribute xsi:schemaLocation { string }?,
r_web-app-Content
}
r_web-resource-collection = element web-resource-collection {
(attribute web-resource-name { string }
| element web-resource-name { string })?,
r_description*,
r_url-pattern*,
r_http-method*
}
r_welcome-file-list = element welcome-file-list {
string |
element welcome-file { string }*
}
|