<?xml encoding="ISO-8859-1" ?>

<!ELEMENT jsp-script (
		declaration?,
		language?,
		errorpage?,
		import*,
		content_type?,
		header*,
		body?
	)
>

<!ATTLIST jsp-script name CDATA #REQUIRED>

<!ELEMENT body
	(
		 boilerplate
		|comment
		|display
		|excludeif
		|expression
		|includeif
		|include
		|loop
		|scriptlet
		|usebean
	)*
>

<!ELEMENT name (#PCDATA)>
<!ELEMENT language (#PCDATA)>
<!ELEMENT errorpage (#PCDATA)>
<!ELEMENT content_type (#PCDATA)>
<!ELEMENT import (#PCDATA)>
<!ELEMENT declaration (#PCDATA)>

<!ELEMENT boilerplate (#PCDATA)>
<!ELEMENT comment (#PCDATA)>

<!ELEMENT display EMPTY>
<!ATTLIST
	display
	property	CDATA #REQUIRED
	placeholder	CDATA #IMPLIED
>

<!ELEMENT excludeif (body?)>

<!ATTLIST
	excludeif
		property	CDATA #REQUIRED
		value		CDATA #REQUIRED
		case		(sensitive|insensitive) "insensitive"
		match		(contains|startswith|endswith|null|exact) "exact"
>

<!ELEMENT expression (#PCDATA)>

<!ELEMENT header EMPTY>
<!ATTLIST
	header
		name	CDATA #REQUIRED
		value	CDATA #REQUIRED
>


<!ELEMENT include EMPTY>
<!ATTLIST
	include
		file	CDATA #IMPLIED
		virtual CDATA #IMPLIED
		include CDATA #IMPLIED
>

<!ELEMENT includeif (body?)>

<!ATTLIST
	includeif
		property	CDATA #REQUIRED
		value		CDATA #REQUIRED
		case		(sensitive|insensitive) "insensitive"
		match		(contains|startswith|endswith|null|exact) "exact"
>

<!ELEMENT loop (body?)>

<!ATTLIST
	loop
		property	CDATA #REQUIRED
		propertyelement CDATA #REQUIRED
>

<!ELEMENT setoncreate EMPTY>
<!ATTLIST
	setoncreate
		beanproperty	CDATA #REQUIRED
		value		CDATA #REQUIRED
>

<!ELEMENT setfromrequest EMPTY>
<!ATTLIST
	setfromrequest
		beanproperty	CDATA #REQUIRED
		paramname	CDATA #IMPLIED
>

<!ELEMENT scriptlet (#PCDATA)>

<!ELEMENT usebean ((setoncreate|setfromrequest)*)>
<!ATTLIST
	usebean
		name	 CDATA #REQUIRED
		type	 CDATA #REQUIRED
		lifespan (page|session|application) #REQUIRED
>

