<!-- "http://www.azizatech.com/rules/rules.dtd"-->
<!--The rules data model captures complex relationships and dependencies between elements and attributes, in order to be able to check a document against a Best Practice Guide. A stylesheet can then transform the rules into another stylesheet that can check a document  against the rules.
Developed by Elizabeth Shaw
Aziza Technology Associates
Pittsburgh PA
http://www.azizatech.com
ejshaw@azizatech.com
Basic document structure is:
rules
	group+
		title
		element+
			children*
				child+
				appnotes
			options*
				attributes+
				appnotes?
			attributes*
				values
					value?
				appnotes
			tests*
				test+
				appnotes
			appnotes?

			 rules.dtd Version 0.8 2004-12-10
 

			See rules rulesdefinition.xml for application guidelines.
			This DTD is freely available for use and modification as long as attribution for the original is maintained.
 Copyright (C) 2004 Aziza Technology Associates, LLC Pittsburgh, PA 
 http://www.azizatech.com
 This program is free software; you can redistribute it and/or modify 
 it under the terms of the Mozilla Public License available at 
http://www.mozilla.org/MPL/

 This program is distributed in the hope that it will be useful, 
 but WITHOUT ANY WARRANTY; without even the implied warranty of 
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 

-->
<!ELEMENT rules (title, desc?, (group)*)>
<!ATTLIST rules
	date CDATA #REQUIRED
>
<!ELEMENT group (title, desc?, element*)>
<!ELEMENT title (#PCDATA | br)*>
<!ELEMENT desc (p)+>
<!ELEMENT p (#PCDATA | br)*>
<!ELEMENT element ((option | attribute | children | tests)*, appnotes?)>
<!ATTLIST element
	context CDATA #IMPLIED
	path CDATA #REQUIRED
	status (M | MA | Req | Opt | Rec) #REQUIRED
	freq (single | repeated) #REQUIRED
	test CDATA #IMPLIED
>
<!ELEMENT br EMPTY>
<!ELEMENT attribute (values, appnotes?)>
<!ATTLIST attribute
	name CDATA #REQUIRED
	status (M | MA | Req | Opt | Rec) #REQUIRED
	test CDATA #IMPLIED
>
<!ELEMENT values (#PCDATA | value)*>
<!ATTLIST values
	type (single | multi | pattern | cdata) #REQUIRED
	standard (iso8601 | iso639-2b | iso3166-1 | iso15924 | iso15511) #IMPLIED
>
<!ELEMENT value (#PCDATA)>
<!ATTLIST value
	crosswalk (MARC21 | DC | ISAD-G-v2) #IMPLIED
>
<!ELEMENT option (attribute+, appnotes?)>
<!ATTLIST option
	type (oneof) #REQUIRED
	status (M | MA | Req | Opt | Rec) #REQUIRED
>
<!ELEMENT children ((child)+, appnotes?)>
<!ATTLIST children
	status (M | MA | Req | Opt | Rec) #REQUIRED
	include (oneof | all | include) #REQUIRED
>
<!ELEMENT child (#PCDATA)>
<!ELEMENT tests ((test)+, appnotes?)>
<!ATTLIST tests
	status (M | MA | Req | Opt | Rec) #REQUIRED
	include (oneof | all | include) #REQUIRED
>
<!ELEMENT test (#PCDATA)>
<!ELEMENT appnotes (#PCDATA | br)*>
