<!--
Copyright © 2003-2015 Unicode, Inc. and others. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html.

Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that (a) the above copyright notice(s) and this permission notice appear with all copies of the Data Files or Software, (b) both the above copyright notice(s) and this permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified.

THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.
-->

<!-- ######################################################### -->
<!-- The alias, default, special and cp elements are already defined in ldml.dtd. Defining them here as well would break locale conversion.  -->
<!-- ######################################################### -->

<!--  ICU Specific elements                                    -->
<!-- ######################################################### -->
<!ATTLIST special xmlns:icu CDATA #IMPLIED>
<!ATTLIST special icu:version CDATA #IMPLIED>

<!ELEMENT icu:version EMPTY>
<!ATTLIST icu:version icu:specialVersion  CDATA #FIXED "1.7" >
<!ATTLIST icu:version icu:requiredLDMLVersion CDATA #FIXED "1.7" >

<!-- ICU Scripts -->

<!ELEMENT icu:scripts (alias | icu:script* ) >
<!ATTLIST icu:scripts draft ( true | false ) #IMPLIED >
<!ATTLIST icu:scripts standard CDATA #IMPLIED >

<!ELEMENT icu:script ( #PCDATA ) >
<!ATTLIST icu:script type NMTOKEN #REQUIRED >
<!ATTLIST icu:script draft ( true | false ) #IMPLIED >

<!-- RBNF data -->
<!ELEMENT icu:ruleBasedNumberFormats ( alias | (default?, icu:ruleBasedNumberFormat*)) >

<!-- Either bare data or any number of cp -->
<!ELEMENT icu:ruleBasedNumberFormat (#PCDATA | cp)* >
<!ATTLIST icu:ruleBasedNumberFormat type NMTOKEN #IMPLIED >

<!-- RBBI data -->
<!ELEMENT icu:breakIteratorData (alias | (icu:boundaries?, icu:dictionaries?)) >

<!ELEMENT icu:boundaries (alias | (icu:grapheme?, icu:word?, icu:line*, icu:sentence?, icu:title?, icu:xgc?)) >

<!ELEMENT icu:dictionaries (alias | (icu:dictionary*)) >

<!ELEMENT icu:dictionary ( #PCDATA ) >
<!ATTLIST icu:dictionary icu:dependency NMTOKEN #IMPLIED >
<!ATTLIST icu:dictionary type NMTOKEN #REQUIRED >

<!ELEMENT icu:grapheme ( #PCDATA ) >
<!ATTLIST icu:grapheme icu:class NMTOKEN #IMPLIED >
<!ATTLIST icu:grapheme icu:append NMTOKEN #IMPLIED >
<!ATTLIST icu:grapheme icu:import NMTOKEN #IMPLIED >
<!ATTLIST icu:grapheme icu:dependency NMTOKEN #IMPLIED >

<!ELEMENT icu:word ( #PCDATA ) >
<!ATTLIST icu:word icu:class NMTOKEN #IMPLIED >
<!ATTLIST icu:word icu:append NMTOKEN #IMPLIED >
<!ATTLIST icu:word icu:import NMTOKEN #IMPLIED >
<!ATTLIST icu:word icu:dependency NMTOKEN #IMPLIED >

<!ELEMENT icu:line ( #PCDATA ) >
<!ATTLIST icu:line icu:class NMTOKEN #IMPLIED >
<!ATTLIST icu:line icu:append NMTOKEN #IMPLIED >
<!ATTLIST icu:line icu:import NMTOKEN #IMPLIED >
<!ATTLIST icu:line icu:dependency NMTOKEN #IMPLIED >
<!ATTLIST icu:line alt NMTOKENS #IMPLIED >

<!ELEMENT icu:sentence ( #PCDATA ) >
<!ATTLIST icu:sentence icu:class NMTOKEN #IMPLIED >
<!ATTLIST icu:sentence icu:append NMTOKEN #IMPLIED >
<!ATTLIST icu:sentence icu:import NMTOKEN #IMPLIED >
<!ATTLIST icu:sentence icu:dependency NMTOKEN #IMPLIED >

<!ELEMENT icu:title ( #PCDATA ) >
<!ATTLIST icu:title icu:class NMTOKEN #IMPLIED >
<!ATTLIST icu:title icu:append NMTOKEN #IMPLIED >
<!ATTLIST icu:title icu:import NMTOKEN #IMPLIED >
<!ATTLIST icu:title icu:dependency NMTOKEN #IMPLIED >

<!ELEMENT icu:xgc ( #PCDATA ) >
<!ATTLIST icu:xgc icu:class NMTOKEN #IMPLIED >
<!ATTLIST icu:xgc icu:append NMTOKEN #IMPLIED >
<!ATTLIST icu:xgc icu:import NMTOKEN #IMPLIED >
<!ATTLIST icu:xgc icu:dependency NMTOKEN #IMPLIED >

<!--deprecated -->
<!ELEMENT icu:breakDictionaryData EMPTY >
<!ATTLIST icu:breakDictionaryData icu:class NMTOKEN #IMPLIED >
<!ATTLIST icu:breakDictionaryData icu:import NMTOKEN #IMPLIED >
<!ATTLIST icu:breakDictionaryData icu:importFile CDATA #IMPLIED >

<!-- RBT data  -->
<!ELEMENT icu:transforms ( alias | (default?, icu:transform*)) >
<!ELEMENT icu:transform ( #PCDATA |cp )* >
<!ATTLIST icu:transform type NMTOKEN #REQUIRED >

<!-- leap month information, all deprecated -->
<!ELEMENT icu:isLeapMonth ( alias | (icu:nonLeapSymbol?, icu:leapSymbol? ))> <!-- deprecated -->
<!ELEMENT icu:nonLeapSymbol ( #PCDATA ) > <!-- deprecated -->
<!ELEMENT icu:leapSymbol ( #PCDATA ) > <!-- deprecated -->

<!-- UCA Rules -->
<!ELEMENT icu:UCARules EMPTY >
<!ATTLIST icu:UCARules icu:uca_rules CDATA #REQUIRED >

<!-- Dependencies Rules -->
<!ELEMENT icu:depends EMPTY >
<!ATTLIST icu:depends icu:dependency CDATA #REQUIRED >

<!-- ######################################################### -->
