lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [5462] Refactor, splitting types into a separate file to a


From: Greg Chicares
Subject: [lmi-commits] [5462] Refactor, splitting types into a separate file to allow reuse
Date: Sat, 26 May 2012 10:23:28 +0000

Revision: 5462
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5462
Author:   chicares
Date:     2012-05-26 10:23:27 +0000 (Sat, 26 May 2012)
Log Message:
-----------
Refactor, splitting types into a separate file to allow reuse

Modified Paths:
--------------
    lmi/trunk/cell.rnc
    lmi/trunk/cell.xsd
    lmi/trunk/test_schemata.sh

Added Paths:
-----------
    lmi/trunk/types.rnc
    lmi/trunk/types.xsd

Modified: lmi/trunk/cell.rnc
===================================================================
--- lmi/trunk/cell.rnc  2012-05-25 18:18:06 UTC (rev 5461)
+++ lmi/trunk/cell.rnc  2012-05-26 10:23:27 UTC (rev 5462)
@@ -480,342 +480,5 @@
      element ZipCode                          {text}
     }
 
-# It is infeasible to validate an input sequence with a regex.
+include "types.rnc"
 
-numeric_sequence = text
-payment_sequence = text
-mode_sequence    = text
-dbo_sequence     = text
-specamt_sequence = text
-
-# Numeric-range types.
-
-## Floating-point number greater than or equal to zero.
-nonnegative_double = xsd:double             {minInclusive = "0"                
               }
-
-## Floating-point number between zero and one, inclusive.
-proportion_double  = xsd:double             {minInclusive = "0"       
maxInclusive = "1"      }
-
-## Julian Day Number between 1752-09-14 and 9999-12-31, inclusive.
-calendar_date_int  = xsd:nonNegativeInteger {minInclusive = "2361222" 
maxInclusive = "5373484"}
-
-## Attained age: integer between zero and 99, inclusive.
-age_int            = xsd:nonNegativeInteger {                         
maxInclusive = "99"     }
-
-## Time interval in years: integer between zero and 100, inclusive.
-duration_int       = xsd:nonNegativeInteger {                         
maxInclusive = "100"    }
-
-## Time interval in months: integer between zero and eleven, inclusive.
-month_int          = xsd:nonNegativeInteger {                         
maxInclusive = "11"     }
-
-# Enumerations.
-
-## 'Yes' or 'No'. 'No' is listed first because it is usually the better 
default.
-yes_or_no =
-      "No"
-    | "Yes"
-
-## Gender. 'Unisex' is for contracts that don't distinguish rates by gender.
-gender =
-      "Female"
-    | "Male"
-    | "Unisex"
-
-## Smoking. 'Unismoke' is for contracts that don't distinguish rates
-## by smoking. Some contracts speak of tobacco use instead of smoking,
-## but none use both, so a single set of enumerators suffices.
-smoking =
-      "Smoker"
-    | "Nonsmoker"
-    | "Unismoke"
-
-## Underwriting class. Use "Rated" for contracts with table ratings.
-class =
-      "Preferred"
-    | "Standard"
-    | "Rated"
-    | "Ultra"
-
-## Death benefit option: 'A' = level; 'B' = increasing; 'ROP' = return of 
premium.
-dbopt =
-      "A"
-    | "B"
-    | "ROP"
-
-## Payment mode.
-mode =
-      "Annual"
-    | "Semiannual"
-    | "Quarterly"
-    | "Monthly"
-
-## Basis for expense and general-account rates.
-gen_basis =
-      "Current"
-    | "Guaranteed"
-    | "Midpoint"
-
-## Basis for separate-account rates.
-sep_basis =
-      "Hypothetical"
-    | "Zero"
-    | "Half of hypothetical"
-
-## Type of underwriting.
-uw_basis =
-      "Medical"
-    | "Paramedical"
-    | "Nonmedical"
-    | "Simplified issue"
-    | "Guaranteed issue"
-
-## Industry-standard table rating, or 'None'.
-table_rating =
-      "None"
-    | "A=+25%"
-    | "B=+50%"
-    | "C=+75%"
-    | "D=+100%"
-    | "E=+125%"
-    | "F=+150%"
-    | "H=+200%"
-    | "J=+250%"
-    | "L=+300%"
-    | "P=+400%"
-
-## Parameter to be solved for.
-solve_type =
-      "No solve"
-    | "Specified amount"
-    | "Employee premium"
-    | "Employer premium"
-    | "Loan"
-    | "Withdrawal"
-
-## Solve goal.
-solve_target =
-      "Endowment"
-    | "Target CSV"
-    | "CSV = tax basis"
-    | "Avoid MEC"
-
-## Optional strategy to determine payment as a function of specified amount.
-## 'PmtInputScalar' is obsolete.
-## 'PmtMEP' uses 7702A 7PP rate.
-## 'Table' uses an external table (e.g., New York Table D for group insurance).
-pmt_strategy =
-      "PmtInputScalar"
-    | "PmtMinimum"
-    | "PmtTarget"
-    | "PmtMEP"
-    | "PmtGLP"
-    | "PmtGSP"
-    | "PmtCorridor"
-    | "PmtTable"
-
-## Optional strategy to determine specified amount as a function of premium.
-## 'SAInputScalar' is obsolete.
-## 'SAMEP' uses 7702A 7PP rate.
-sa_strategy =
-      "SAInputScalar"
-    | "SAMaximum"
-    | "SATarget"
-    | "SAMEP"
-    | "SAGLP"
-    | "SAGSP"
-    | "SACorridor"
-    | "SASalary"
-
-## General-account rate: before or after spread.
-gen_acct_rate_type =
-      "Credited rate"
-    | "Earned rate"
-
-## Separate-account rate: before or after spread.
-sep_acct_rate_type =
-      "Net rate"
-    | "Gross rate"
-
-## Loan rate: fixed or variable.
-loan_rate_type =
-      "Fixed loan rate"
-    | "Variable loan rate"
-
-## Fund-allocation overrides, for payments that aren't peremptorily
-## allocated to the general account (e.g., employer payments on some
-## group UL contracts might always go into the general account).
-## Conceptually:
-## 'Average': use mean separate-account fee.
-## 'Override': use scalar input separate-account fee.
-## 'Choose': respect input fund allocations.
-## However, there's no GUI for fund allocation yet, so, for the nonce,
-## the meanings in practice are:
-## 'Average': allocate all payments to separate account.
-## 'Choose': allocate all payments to general account.
-## Reason: the GUI, once it exists, will by default allocate all
-## payments to the general account if no separate-account funds are
-## selected.
-fund_input_method =
-      "Average fund"
-    | "Override fund"
-    | "Choose funds"
-
-## Order in which different individuals in a census are processed.
-## By default, illustrations are created independently, in series:
-## one life at a time. Alternatively, all lives may be run together
-## in parallel, which requires more memory but permits them to affect
-## each other, as when individual charges depend on total case assets.
-run_order =
-      "Life by life"
-    | "Month by month"
-
-## Presumed moment of death, for partial mortality.
-survival_limit =
-      "No survival limit"
-    | "Survive to age limit"
-    | "Survive to duration limit"
-    | "Survive to life expectancy"
-
-## Order in which term and base are affected by changes in total
-## specified amount.
-term_adj_method =
-      "Adjust base first"
-    | "Adjust term first"
-    | "Adjust base and term proportionately"
-
-## USPS two-letter abbreviations for the fifty US states, plus
-##   'DC' (District of Columbia)
-##   'PR' (Puerto Rico)
-## and 'XX', a fictitious state used for non-US business.
-state =
-      "AL" | "AK" | "AZ" | "AR" | "CA" | "CO" | "CT" | "DE" | "DC" | "FL"
-    | "GA" | "HI" | "ID" | "IL" | "IN" | "IA" | "KS" | "KY" | "LA" | "ME"
-    | "MD" | "MA" | "MI" | "MN" | "MS" | "MO" | "MT" | "NE" | "NV" | "NH"
-    | "NJ" | "NM" | "NY" | "NC" | "ND" | "OH" | "OK" | "OR" | "PA" | "PR"
-    | "RI" | "SC" | "SD" | "TN" | "TX" | "UT" | "VT" | "VA" | "WA" | "WV"
-    | "WI" | "WY"
-    | "XX"
-
-## International standard country code [ISO 3166-1-Alpha-2 as of 2000-08-21].
-country =
-      "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AN" | "AO" | "AQ"
-    | "AR" | "AS" | "AT" | "AU" | "AW" | "AZ" | "BA" | "BB" | "BD" | "BE"
-    | "BF" | "BG" | "BH" | "BI" | "BJ" | "BM" | "BN" | "BO" | "BR" | "BS"
-    | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG"
-    | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV"
-    | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC"
-    | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM"
-    | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GH" | "GI" | "GL"
-    | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY"
-    | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IN"
-    | "IO" | "IQ" | "IR" | "IS" | "IT" | "JM" | "JO" | "JP" | "KE" | "KG"
-    | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA"
-    | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY"
-    | "MA" | "MC" | "MD" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO"
-    | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY"
-    | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP"
-    | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK"
-    | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PW" | "PY" | "QA" | "RE"
-    | "RO" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH"
-    | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "ST" | "SV"
-    | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TM"
-    | "TN" | "TO" | "TP" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG"
-    | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN"
-    | "VU" | "WF" | "WS" | "YE" | "YT" | "YU" | "ZA" | "ZM" | "ZW"
-
-## 7702 definitional test, if any.
-defn_life_ins =
-      "CVAT"
-    | "GPT"
-    | "Not 7702 compliant"
-
-## Special logic, if any, to avoid a MEC. Formerly, another choice
-## tried to avoid a MEC by increasing the specified amount, but that
-## proved unworkable (e.g., because of underwriting).
-mec_avoid_method =
-      "Allow MEC"
-    | "Reduce premium"
-
-## 7702A definition of material change. For the nonce, use
-## "Earlier of" with CVAT, and "adjustment event" with GPT.
-defn_material_change =
-      "Unnecessary premium"
-    | "Benefit increase"
-    | "Later of increase or unnecessary premium"
-    | "Earlier of increase or unnecessary premium"
-    | "GPT adjustment event"
-
-## Inclusive start of a half-open interval, used e.g. for input sequences.
-from_point =
-      "Issue"
-    | "Year"
-    | "Age"
-    | "Retirement"
-
-## Exclusive end of a half-open interval used e.g. for input sequences.
-to_point =
-      "Retirement"
-    | "Year"
-    | "Age"
-    | "Maturity"
-
-## Column on optional supplemental report.
-report_column =
-      "[none]"
-    | "AttainedAge"
-    | "PolicyYear"
-    | "InforceLives"
-    | "SpecAmt"
-    | "TermSpecAmt"
-    | "CorridorFactor"
-    | "AnnGAIntRate_Current"
-    | "AnnSAIntRate_Current"
-    | "Outlay"
-    | "EeGrossPmt"
-    | "ErGrossPmt"
-    | "NetWD"
-    | "NewCashLoan"
-    | "TotalLoanBalance_Current"
-    | "TotalLoanBalance_Guaranteed"
-    | "AcctVal_Current"
-    | "AcctVal_Guaranteed"
-    | "CSVNet_Current"
-    | "CSVNet_Guaranteed"
-    | "EOYDeathBft_Current"
-    | "EOYDeathBft_Guaranteed"
-    | "BaseDeathBft_Current"
-    | "BaseDeathBft_Guaranteed"
-    | "TermPurchased_Current"
-    | "TermPurchased_Guaranteed"
-    | "COICharge_Current"
-    | "COICharge_Guaranteed"
-    | "RiderCharges_Current"
-    | "IrrCsv_Current"
-    | "IrrCsv_Guaranteed"
-    | "IrrDb_Current"
-    | "IrrDb_Guaranteed"
-    | "ExperienceReserve_Current"
-    | "NetClaims_Current"
-    | "NetCOICharge_Current"
-    | "ProjectedCoiCharge_Current"
-    | "KFactor_Current"
-    | "GrossPmt"
-    | "LoanIntAccrued_Current"
-    | "NetDeathBenefit"
-    | "DeathProceedsPaid_Current"
-    | "ClaimsPaid_Current"
-    | "AVRelOnDeath_Current"
-    | "SpecAmtLoad_Current"
-    | "GrossIntCredited_Current"
-    | "NetIntCredited_Current"
-    | "SepAcctCharges_Current"
-    | "PolicyFee_Current"
-    | "AVGenAcct_CurrentZero"
-    | "AVGenAcct_GuaranteedZero"
-    | "AVSepAcct_CurrentZero"
-    | "AVSepAcct_GuaranteedZero"
-    | "AcctVal_CurrentZero"
-    | "AcctVal_GuaranteedZero"
-    | "CSVNet_CurrentZero"
-    | "CSVNet_GuaranteedZero"
-

Modified: lmi/trunk/cell.xsd
===================================================================
--- lmi/trunk/cell.xsd  2012-05-25 18:18:06 UTC (rev 5461)
+++ lmi/trunk/cell.xsd  2012-05-26 10:23:27 UTC (rev 5462)
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified">
+  <xs:include schemaLocation="types.xsd"/>
   <!--
     RELAX NG schema for a single cell (class Input).
 
@@ -1292,743 +1293,4 @@
       <xs:documentation>Insured's address: zip code.</xs:documentation>
     </xs:annotation>
   </xs:element>
-  <!-- It is infeasible to validate an input sequence with a regex. -->
-  <!-- Numeric-range types. -->
-  <xs:simpleType name="nonnegative_double">
-    <xs:annotation>
-      <xs:documentation>Floating-point number greater than or equal to 
zero.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:double">
-      <xs:minInclusive value="0"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="proportion_double">
-    <xs:annotation>
-      <xs:documentation>Floating-point number between zero and one, 
inclusive.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:double">
-      <xs:minInclusive value="0"/>
-      <xs:maxInclusive value="1"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="calendar_date_int">
-    <xs:annotation>
-      <xs:documentation>Julian Day Number between 1752-09-14 and 9999-12-31, 
inclusive.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:nonNegativeInteger">
-      <xs:minInclusive value="2361222"/>
-      <xs:maxInclusive value="5373484"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="age_int">
-    <xs:annotation>
-      <xs:documentation>Attained age: integer between zero and 99, 
inclusive.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:nonNegativeInteger">
-      <xs:maxInclusive value="99"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="duration_int">
-    <xs:annotation>
-      <xs:documentation>Time interval in years: integer between zero and 100, 
inclusive.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:nonNegativeInteger">
-      <xs:maxInclusive value="100"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="month_int">
-    <xs:annotation>
-      <xs:documentation>Time interval in months: integer between zero and 
eleven, inclusive.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:nonNegativeInteger">
-      <xs:maxInclusive value="11"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <!-- Enumerations. -->
-  <xs:simpleType name="yes_or_no">
-    <xs:annotation>
-      <xs:documentation>'Yes' or 'No'. 'No' is listed first because it is 
usually the better default.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="No"/>
-      <xs:enumeration value="Yes"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="gender">
-    <xs:annotation>
-      <xs:documentation>Gender. 'Unisex' is for contracts that don't 
distinguish rates by gender.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Female"/>
-      <xs:enumeration value="Male"/>
-      <xs:enumeration value="Unisex"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="smoking">
-    <xs:annotation>
-      <xs:documentation>Smoking. 'Unismoke' is for contracts that don't 
distinguish rates
-by smoking. Some contracts speak of tobacco use instead of smoking,
-but none use both, so a single set of enumerators suffices.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Smoker"/>
-      <xs:enumeration value="Nonsmoker"/>
-      <xs:enumeration value="Unismoke"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="class">
-    <xs:annotation>
-      <xs:documentation>Underwriting class. Use "Rated" for contracts with 
table ratings.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Preferred"/>
-      <xs:enumeration value="Standard"/>
-      <xs:enumeration value="Rated"/>
-      <xs:enumeration value="Ultra"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="dbopt">
-    <xs:annotation>
-      <xs:documentation>Death benefit option: 'A' = level; 'B' = increasing; 
'ROP' = return of premium.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="A"/>
-      <xs:enumeration value="B"/>
-      <xs:enumeration value="ROP"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="mode">
-    <xs:annotation>
-      <xs:documentation>Payment mode.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Annual"/>
-      <xs:enumeration value="Semiannual"/>
-      <xs:enumeration value="Quarterly"/>
-      <xs:enumeration value="Monthly"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="gen_basis">
-    <xs:annotation>
-      <xs:documentation>Basis for expense and general-account 
rates.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Current"/>
-      <xs:enumeration value="Guaranteed"/>
-      <xs:enumeration value="Midpoint"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="sep_basis">
-    <xs:annotation>
-      <xs:documentation>Basis for separate-account rates.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Hypothetical"/>
-      <xs:enumeration value="Zero"/>
-      <xs:enumeration value="Half of hypothetical"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="uw_basis">
-    <xs:annotation>
-      <xs:documentation>Type of underwriting.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Medical"/>
-      <xs:enumeration value="Paramedical"/>
-      <xs:enumeration value="Nonmedical"/>
-      <xs:enumeration value="Simplified issue"/>
-      <xs:enumeration value="Guaranteed issue"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="table_rating">
-    <xs:annotation>
-      <xs:documentation>Industry-standard table rating, or 
'None'.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="None"/>
-      <xs:enumeration value="A=+25%"/>
-      <xs:enumeration value="B=+50%"/>
-      <xs:enumeration value="C=+75%"/>
-      <xs:enumeration value="D=+100%"/>
-      <xs:enumeration value="E=+125%"/>
-      <xs:enumeration value="F=+150%"/>
-      <xs:enumeration value="H=+200%"/>
-      <xs:enumeration value="J=+250%"/>
-      <xs:enumeration value="L=+300%"/>
-      <xs:enumeration value="P=+400%"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="solve_type">
-    <xs:annotation>
-      <xs:documentation>Parameter to be solved for.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="No solve"/>
-      <xs:enumeration value="Specified amount"/>
-      <xs:enumeration value="Employee premium"/>
-      <xs:enumeration value="Employer premium"/>
-      <xs:enumeration value="Loan"/>
-      <xs:enumeration value="Withdrawal"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="solve_target">
-    <xs:annotation>
-      <xs:documentation>Solve goal.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Endowment"/>
-      <xs:enumeration value="Target CSV"/>
-      <xs:enumeration value="CSV = tax basis"/>
-      <xs:enumeration value="Avoid MEC"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="pmt_strategy">
-    <xs:annotation>
-      <xs:documentation>Optional strategy to determine payment as a function 
of specified amount.
-'PmtInputScalar' is obsolete.
-'PmtMEP' uses 7702A 7PP rate.
-'Table' uses an external table (e.g., New York Table D for group 
insurance).</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="PmtInputScalar"/>
-      <xs:enumeration value="PmtMinimum"/>
-      <xs:enumeration value="PmtTarget"/>
-      <xs:enumeration value="PmtMEP"/>
-      <xs:enumeration value="PmtGLP"/>
-      <xs:enumeration value="PmtGSP"/>
-      <xs:enumeration value="PmtCorridor"/>
-      <xs:enumeration value="PmtTable"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="sa_strategy">
-    <xs:annotation>
-      <xs:documentation>Optional strategy to determine specified amount as a 
function of premium.
-'SAInputScalar' is obsolete.
-'SAMEP' uses 7702A 7PP rate.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="SAInputScalar"/>
-      <xs:enumeration value="SAMaximum"/>
-      <xs:enumeration value="SATarget"/>
-      <xs:enumeration value="SAMEP"/>
-      <xs:enumeration value="SAGLP"/>
-      <xs:enumeration value="SAGSP"/>
-      <xs:enumeration value="SACorridor"/>
-      <xs:enumeration value="SASalary"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="gen_acct_rate_type">
-    <xs:annotation>
-      <xs:documentation>General-account rate: before or after 
spread.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Credited rate"/>
-      <xs:enumeration value="Earned rate"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="sep_acct_rate_type">
-    <xs:annotation>
-      <xs:documentation>Separate-account rate: before or after 
spread.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Net rate"/>
-      <xs:enumeration value="Gross rate"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="loan_rate_type">
-    <xs:annotation>
-      <xs:documentation>Loan rate: fixed or variable.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Fixed loan rate"/>
-      <xs:enumeration value="Variable loan rate"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="fund_input_method">
-    <xs:annotation>
-      <xs:documentation>Fund-allocation overrides, for payments that aren't 
peremptorily
-allocated to the general account (e.g., employer payments on some
-group UL contracts might always go into the general account).
-Conceptually:
-'Average': use mean separate-account fee.
-'Override': use scalar input separate-account fee.
-'Choose': respect input fund allocations.
-However, there's no GUI for fund allocation yet, so, for the nonce,
-the meanings in practice are:
-'Average': allocate all payments to separate account.
-'Choose': allocate all payments to general account.
-Reason: the GUI, once it exists, will by default allocate all
-payments to the general account if no separate-account funds are
-selected.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Average fund"/>
-      <xs:enumeration value="Override fund"/>
-      <xs:enumeration value="Choose funds"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="run_order">
-    <xs:annotation>
-      <xs:documentation>Order in which different individuals in a census are 
processed.
-By default, illustrations are created independently, in series:
-one life at a time. Alternatively, all lives may be run together
-in parallel, which requires more memory but permits them to affect
-each other, as when individual charges depend on total case 
assets.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Life by life"/>
-      <xs:enumeration value="Month by month"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="survival_limit">
-    <xs:annotation>
-      <xs:documentation>Presumed moment of death, for partial 
mortality.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="No survival limit"/>
-      <xs:enumeration value="Survive to age limit"/>
-      <xs:enumeration value="Survive to duration limit"/>
-      <xs:enumeration value="Survive to life expectancy"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="term_adj_method">
-    <xs:annotation>
-      <xs:documentation>Order in which term and base are affected by changes 
in total
-specified amount.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Adjust base first"/>
-      <xs:enumeration value="Adjust term first"/>
-      <xs:enumeration value="Adjust base and term proportionately"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="state">
-    <xs:annotation>
-      <xs:documentation>USPS two-letter abbreviations for the fifty US states, 
plus
-  'DC' (District of Columbia)
-  'PR' (Puerto Rico)
-and 'XX', a fictitious state used for non-US business.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AL"/>
-      <xs:enumeration value="AK"/>
-      <xs:enumeration value="AZ"/>
-      <xs:enumeration value="AR"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CO"/>
-      <xs:enumeration value="CT"/>
-      <xs:enumeration value="DE"/>
-      <xs:enumeration value="DC"/>
-      <xs:enumeration value="FL"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="HI"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="IN"/>
-      <xs:enumeration value="IA"/>
-      <xs:enumeration value="KS"/>
-      <xs:enumeration value="KY"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="ME"/>
-      <xs:enumeration value="MD"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MI"/>
-      <xs:enumeration value="MN"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MO"/>
-      <xs:enumeration value="MT"/>
-      <xs:enumeration value="NE"/>
-      <xs:enumeration value="NV"/>
-      <xs:enumeration value="NH"/>
-      <xs:enumeration value="NJ"/>
-      <xs:enumeration value="NM"/>
-      <xs:enumeration value="NY"/>
-      <xs:enumeration value="NC"/>
-      <xs:enumeration value="ND"/>
-      <xs:enumeration value="OH"/>
-      <xs:enumeration value="OK"/>
-      <xs:enumeration value="OR"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="RI"/>
-      <xs:enumeration value="SC"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TX"/>
-      <xs:enumeration value="UT"/>
-      <xs:enumeration value="VT"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="WA"/>
-      <xs:enumeration value="WV"/>
-      <xs:enumeration value="WI"/>
-      <xs:enumeration value="WY"/>
-      <xs:enumeration value="XX"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="country">
-    <xs:annotation>
-      <xs:documentation>International standard country code [ISO 
3166-1-Alpha-2 as of 2000-08-21].</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AD"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AG"/>
-      <xs:enumeration value="AI"/>
-      <xs:enumeration value="AL"/>
-      <xs:enumeration value="AM"/>
-      <xs:enumeration value="AN"/>
-      <xs:enumeration value="AO"/>
-      <xs:enumeration value="AQ"/>
-      <xs:enumeration value="AR"/>
-      <xs:enumeration value="AS"/>
-      <xs:enumeration value="AT"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AW"/>
-      <xs:enumeration value="AZ"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BB"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BF"/>
-      <xs:enumeration value="BG"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BI"/>
-      <xs:enumeration value="BJ"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BS"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BV"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="BY"/>
-      <xs:enumeration value="BZ"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CC"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CF"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CI"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CL"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CO"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CX"/>
-      <xs:enumeration value="CY"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DE"/>
-      <xs:enumeration value="DJ"/>
-      <xs:enumeration value="DK"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DO"/>
-      <xs:enumeration value="DZ"/>
-      <xs:enumeration value="EC"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EH"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ES"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FJ"/>
-      <xs:enumeration value="FK"/>
-      <xs:enumeration value="FM"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FR"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GB"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GE"/>
-      <xs:enumeration value="GF"/>
-      <xs:enumeration value="GH"/>
-      <xs:enumeration value="GI"/>
-      <xs:enumeration value="GL"/>
-      <xs:enumeration value="GM"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="GP"/>
-      <xs:enumeration value="GQ"/>
-      <xs:enumeration value="GR"/>
-      <xs:enumeration value="GS"/>
-      <xs:enumeration value="GT"/>
-      <xs:enumeration value="GU"/>
-      <xs:enumeration value="GW"/>
-      <xs:enumeration value="GY"/>
-      <xs:enumeration value="HK"/>
-      <xs:enumeration value="HM"/>
-      <xs:enumeration value="HN"/>
-      <xs:enumeration value="HR"/>
-      <xs:enumeration value="HT"/>
-      <xs:enumeration value="HU"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IE"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="IN"/>
-      <xs:enumeration value="IO"/>
-      <xs:enumeration value="IQ"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="JM"/>
-      <xs:enumeration value="JO"/>
-      <xs:enumeration value="JP"/>
-      <xs:enumeration value="KE"/>
-      <xs:enumeration value="KG"/>
-      <xs:enumeration value="KH"/>
-      <xs:enumeration value="KI"/>
-      <xs:enumeration value="KM"/>
-      <xs:enumeration value="KN"/>
-      <xs:enumeration value="KP"/>
-      <xs:enumeration value="KR"/>
-      <xs:enumeration value="KW"/>
-      <xs:enumeration value="KY"/>
-      <xs:enumeration value="KZ"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LK"/>
-      <xs:enumeration value="LR"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="LT"/>
-      <xs:enumeration value="LU"/>
-      <xs:enumeration value="LV"/>
-      <xs:enumeration value="LY"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MC"/>
-      <xs:enumeration value="MD"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MK"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="MM"/>
-      <xs:enumeration value="MN"/>
-      <xs:enumeration value="MO"/>
-      <xs:enumeration value="MP"/>
-      <xs:enumeration value="MQ"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MT"/>
-      <xs:enumeration value="MU"/>
-      <xs:enumeration value="MV"/>
-      <xs:enumeration value="MW"/>
-      <xs:enumeration value="MX"/>
-      <xs:enumeration value="MY"/>
-      <xs:enumeration value="MZ"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NC"/>
-      <xs:enumeration value="NE"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="NG"/>
-      <xs:enumeration value="NI"/>
-      <xs:enumeration value="NL"/>
-      <xs:enumeration value="NO"/>
-      <xs:enumeration value="NP"/>
-      <xs:enumeration value="NR"/>
-      <xs:enumeration value="NU"/>
-      <xs:enumeration value="NZ"/>
-      <xs:enumeration value="OM"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PG"/>
-      <xs:enumeration value="PH"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="PM"/>
-      <xs:enumeration value="PN"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PT"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="QA"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RO"/>
-      <xs:enumeration value="RU"/>
-      <xs:enumeration value="RW"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SC"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SJ"/>
-      <xs:enumeration value="SK"/>
-      <xs:enumeration value="SL"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SO"/>
-      <xs:enumeration value="SR"/>
-      <xs:enumeration value="ST"/>
-      <xs:enumeration value="SV"/>
-      <xs:enumeration value="SY"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TC"/>
-      <xs:enumeration value="TD"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TG"/>
-      <xs:enumeration value="TH"/>
-      <xs:enumeration value="TJ"/>
-      <xs:enumeration value="TK"/>
-      <xs:enumeration value="TM"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TO"/>
-      <xs:enumeration value="TP"/>
-      <xs:enumeration value="TR"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="TW"/>
-      <xs:enumeration value="TZ"/>
-      <xs:enumeration value="UA"/>
-      <xs:enumeration value="UG"/>
-      <xs:enumeration value="UM"/>
-      <xs:enumeration value="US"/>
-      <xs:enumeration value="UY"/>
-      <xs:enumeration value="UZ"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VE"/>
-      <xs:enumeration value="VG"/>
-      <xs:enumeration value="VI"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VU"/>
-      <xs:enumeration value="WF"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="YE"/>
-      <xs:enumeration value="YT"/>
-      <xs:enumeration value="YU"/>
-      <xs:enumeration value="ZA"/>
-      <xs:enumeration value="ZM"/>
-      <xs:enumeration value="ZW"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="defn_life_ins">
-    <xs:annotation>
-      <xs:documentation>7702 definitional test, if any.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="CVAT"/>
-      <xs:enumeration value="GPT"/>
-      <xs:enumeration value="Not 7702 compliant"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="mec_avoid_method">
-    <xs:annotation>
-      <xs:documentation>Special logic, if any, to avoid a MEC. Formerly, 
another choice
-tried to avoid a MEC by increasing the specified amount, but that
-proved unworkable (e.g., because of underwriting).</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Allow MEC"/>
-      <xs:enumeration value="Reduce premium"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="defn_material_change">
-    <xs:annotation>
-      <xs:documentation>7702A definition of material change. For the nonce, use
-"Earlier of" with CVAT, and "adjustment event" with GPT.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Unnecessary premium"/>
-      <xs:enumeration value="Benefit increase"/>
-      <xs:enumeration value="Later of increase or unnecessary premium"/>
-      <xs:enumeration value="Earlier of increase or unnecessary premium"/>
-      <xs:enumeration value="GPT adjustment event"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="from_point">
-    <xs:annotation>
-      <xs:documentation>Inclusive start of a half-open interval, used e.g. for 
input sequences.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Issue"/>
-      <xs:enumeration value="Year"/>
-      <xs:enumeration value="Age"/>
-      <xs:enumeration value="Retirement"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="to_point">
-    <xs:annotation>
-      <xs:documentation>Exclusive end of a half-open interval used e.g. for 
input sequences.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="Retirement"/>
-      <xs:enumeration value="Year"/>
-      <xs:enumeration value="Age"/>
-      <xs:enumeration value="Maturity"/>
-    </xs:restriction>
-  </xs:simpleType>
-  <xs:simpleType name="report_column">
-    <xs:annotation>
-      <xs:documentation>Column on optional supplemental 
report.</xs:documentation>
-    </xs:annotation>
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="[none]"/>
-      <xs:enumeration value="AttainedAge"/>
-      <xs:enumeration value="PolicyYear"/>
-      <xs:enumeration value="InforceLives"/>
-      <xs:enumeration value="SpecAmt"/>
-      <xs:enumeration value="TermSpecAmt"/>
-      <xs:enumeration value="CorridorFactor"/>
-      <xs:enumeration value="AnnGAIntRate_Current"/>
-      <xs:enumeration value="AnnSAIntRate_Current"/>
-      <xs:enumeration value="Outlay"/>
-      <xs:enumeration value="EeGrossPmt"/>
-      <xs:enumeration value="ErGrossPmt"/>
-      <xs:enumeration value="NetWD"/>
-      <xs:enumeration value="NewCashLoan"/>
-      <xs:enumeration value="TotalLoanBalance_Current"/>
-      <xs:enumeration value="TotalLoanBalance_Guaranteed"/>
-      <xs:enumeration value="AcctVal_Current"/>
-      <xs:enumeration value="AcctVal_Guaranteed"/>
-      <xs:enumeration value="CSVNet_Current"/>
-      <xs:enumeration value="CSVNet_Guaranteed"/>
-      <xs:enumeration value="EOYDeathBft_Current"/>
-      <xs:enumeration value="EOYDeathBft_Guaranteed"/>
-      <xs:enumeration value="BaseDeathBft_Current"/>
-      <xs:enumeration value="BaseDeathBft_Guaranteed"/>
-      <xs:enumeration value="TermPurchased_Current"/>
-      <xs:enumeration value="TermPurchased_Guaranteed"/>
-      <xs:enumeration value="COICharge_Current"/>
-      <xs:enumeration value="COICharge_Guaranteed"/>
-      <xs:enumeration value="RiderCharges_Current"/>
-      <xs:enumeration value="IrrCsv_Current"/>
-      <xs:enumeration value="IrrCsv_Guaranteed"/>
-      <xs:enumeration value="IrrDb_Current"/>
-      <xs:enumeration value="IrrDb_Guaranteed"/>
-      <xs:enumeration value="ExperienceReserve_Current"/>
-      <xs:enumeration value="NetClaims_Current"/>
-      <xs:enumeration value="NetCOICharge_Current"/>
-      <xs:enumeration value="ProjectedCoiCharge_Current"/>
-      <xs:enumeration value="KFactor_Current"/>
-      <xs:enumeration value="GrossPmt"/>
-      <xs:enumeration value="LoanIntAccrued_Current"/>
-      <xs:enumeration value="NetDeathBenefit"/>
-      <xs:enumeration value="DeathProceedsPaid_Current"/>
-      <xs:enumeration value="ClaimsPaid_Current"/>
-      <xs:enumeration value="AVRelOnDeath_Current"/>
-      <xs:enumeration value="SpecAmtLoad_Current"/>
-      <xs:enumeration value="GrossIntCredited_Current"/>
-      <xs:enumeration value="NetIntCredited_Current"/>
-      <xs:enumeration value="SepAcctCharges_Current"/>
-      <xs:enumeration value="PolicyFee_Current"/>
-      <xs:enumeration value="AVGenAcct_CurrentZero"/>
-      <xs:enumeration value="AVGenAcct_GuaranteedZero"/>
-      <xs:enumeration value="AVSepAcct_CurrentZero"/>
-      <xs:enumeration value="AVSepAcct_GuaranteedZero"/>
-      <xs:enumeration value="AcctVal_CurrentZero"/>
-      <xs:enumeration value="AcctVal_GuaranteedZero"/>
-      <xs:enumeration value="CSVNet_CurrentZero"/>
-      <xs:enumeration value="CSVNet_GuaranteedZero"/>
-    </xs:restriction>
-  </xs:simpleType>
 </xs:schema>

Modified: lmi/trunk/test_schemata.sh
===================================================================
--- lmi/trunk/test_schemata.sh  2012-05-25 18:18:06 UTC (rev 5461)
+++ lmi/trunk/test_schemata.sh  2012-05-26 10:23:27 UTC (rev 5462)
@@ -48,7 +48,7 @@
 #
 # Only RNC is to be edited; XSD and RNG are generated from it.
 
-cp --preserve $src_dir/cell.rnc $src_dir/multiple_cell_document.rnc 
$src_dir/single_cell_document.rnc .
+cp --preserve $src_dir/cell.rnc $src_dir/multiple_cell_document.rnc 
$src_dir/single_cell_document.rnc $src_dir/types.rnc .
 
 # Test RNC files with 'jing'.
 

Added: lmi/trunk/types.rnc
===================================================================
--- lmi/trunk/types.rnc                         (rev 0)
+++ lmi/trunk/types.rnc 2012-05-26 10:23:27 UTC (rev 5462)
@@ -0,0 +1,365 @@
+# RELAX NG schema for custom types.
+#
+# Copyright (C) 2012 Gregory W. Chicares.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+# http://savannah.nongnu.org/projects/lmi
+# email: <address@hidden>
+# snail: Chicares, 186 Belle Woods Drive, Glastonbury CT 06033, USA
+
+# $Id$
+
+# This schema is meant not for standalone use, but rather for
+# inclusion from other schemata.
+
+# It is infeasible to validate an input sequence with a regex.
+
+numeric_sequence = text
+payment_sequence = text
+mode_sequence    = text
+dbo_sequence     = text
+specamt_sequence = text
+
+# Numeric-range types.
+
+## Floating-point number greater than or equal to zero.
+nonnegative_double = xsd:double             {minInclusive = "0"                
               }
+
+## Floating-point number between zero and one, inclusive.
+proportion_double  = xsd:double             {minInclusive = "0"       
maxInclusive = "1"      }
+
+## Julian Day Number between 1752-09-14 and 9999-12-31, inclusive.
+calendar_date_int  = xsd:nonNegativeInteger {minInclusive = "2361222" 
maxInclusive = "5373484"}
+
+## Attained age: integer between zero and 99, inclusive.
+age_int            = xsd:nonNegativeInteger {                         
maxInclusive = "99"     }
+
+## Time interval in years: integer between zero and 100, inclusive.
+duration_int       = xsd:nonNegativeInteger {                         
maxInclusive = "100"    }
+
+## Time interval in months: integer between zero and eleven, inclusive.
+month_int          = xsd:nonNegativeInteger {                         
maxInclusive = "11"     }
+
+# Enumerations.
+
+## 'Yes' or 'No'. 'No' is listed first because it is usually the better 
default.
+yes_or_no =
+      "No"
+    | "Yes"
+
+## Gender. 'Unisex' is for contracts that don't distinguish rates by gender.
+gender =
+      "Female"
+    | "Male"
+    | "Unisex"
+
+## Smoking. 'Unismoke' is for contracts that don't distinguish rates
+## by smoking. Some contracts speak of tobacco use instead of smoking,
+## but none use both, so a single set of enumerators suffices.
+smoking =
+      "Smoker"
+    | "Nonsmoker"
+    | "Unismoke"
+
+## Underwriting class. Use "Rated" for contracts with table ratings.
+class =
+      "Preferred"
+    | "Standard"
+    | "Rated"
+    | "Ultra"
+
+## Death benefit option: 'A' = level; 'B' = increasing; 'ROP' = return of 
premium.
+dbopt =
+      "A"
+    | "B"
+    | "ROP"
+
+## Payment mode.
+mode =
+      "Annual"
+    | "Semiannual"
+    | "Quarterly"
+    | "Monthly"
+
+## Basis for expense and general-account rates.
+gen_basis =
+      "Current"
+    | "Guaranteed"
+    | "Midpoint"
+
+## Basis for separate-account rates.
+sep_basis =
+      "Hypothetical"
+    | "Zero"
+    | "Half of hypothetical"
+
+## Type of underwriting.
+uw_basis =
+      "Medical"
+    | "Paramedical"
+    | "Nonmedical"
+    | "Simplified issue"
+    | "Guaranteed issue"
+
+## Industry-standard table rating, or 'None'.
+table_rating =
+      "None"
+    | "A=+25%"
+    | "B=+50%"
+    | "C=+75%"
+    | "D=+100%"
+    | "E=+125%"
+    | "F=+150%"
+    | "H=+200%"
+    | "J=+250%"
+    | "L=+300%"
+    | "P=+400%"
+
+## Parameter to be solved for.
+solve_type =
+      "No solve"
+    | "Specified amount"
+    | "Employee premium"
+    | "Employer premium"
+    | "Loan"
+    | "Withdrawal"
+
+## Solve goal.
+solve_target =
+      "Endowment"
+    | "Target CSV"
+    | "CSV = tax basis"
+    | "Avoid MEC"
+
+## Optional strategy to determine payment as a function of specified amount.
+## 'PmtInputScalar' is obsolete.
+## 'PmtMEP' uses 7702A 7PP rate.
+## 'Table' uses an external table (e.g., New York Table D for group insurance).
+pmt_strategy =
+      "PmtInputScalar"
+    | "PmtMinimum"
+    | "PmtTarget"
+    | "PmtMEP"
+    | "PmtGLP"
+    | "PmtGSP"
+    | "PmtCorridor"
+    | "PmtTable"
+
+## Optional strategy to determine specified amount as a function of premium.
+## 'SAInputScalar' is obsolete.
+## 'SAMEP' uses 7702A 7PP rate.
+sa_strategy =
+      "SAInputScalar"
+    | "SAMaximum"
+    | "SATarget"
+    | "SAMEP"
+    | "SAGLP"
+    | "SAGSP"
+    | "SACorridor"
+    | "SASalary"
+
+## General-account rate: before or after spread.
+gen_acct_rate_type =
+      "Credited rate"
+    | "Earned rate"
+
+## Separate-account rate: before or after spread.
+sep_acct_rate_type =
+      "Net rate"
+    | "Gross rate"
+
+## Loan rate: fixed or variable.
+loan_rate_type =
+      "Fixed loan rate"
+    | "Variable loan rate"
+
+## Fund-allocation overrides, for payments that aren't peremptorily
+## allocated to the general account (e.g., employer payments on some
+## group UL contracts might always go into the general account).
+## Conceptually:
+## 'Average': use mean separate-account fee.
+## 'Override': use scalar input separate-account fee.
+## 'Choose': respect input fund allocations.
+## However, there's no GUI for fund allocation yet, so, for the nonce,
+## the meanings in practice are:
+## 'Average': allocate all payments to separate account.
+## 'Choose': allocate all payments to general account.
+## Reason: the GUI, once it exists, will by default allocate all
+## payments to the general account if no separate-account funds are
+## selected.
+fund_input_method =
+      "Average fund"
+    | "Override fund"
+    | "Choose funds"
+
+## Order in which different individuals in a census are processed.
+## By default, illustrations are created independently, in series:
+## one life at a time. Alternatively, all lives may be run together
+## in parallel, which requires more memory but permits them to affect
+## each other, as when individual charges depend on total case assets.
+run_order =
+      "Life by life"
+    | "Month by month"
+
+## Presumed moment of death, for partial mortality.
+survival_limit =
+      "No survival limit"
+    | "Survive to age limit"
+    | "Survive to duration limit"
+    | "Survive to life expectancy"
+
+## Order in which term and base are affected by changes in total
+## specified amount.
+term_adj_method =
+      "Adjust base first"
+    | "Adjust term first"
+    | "Adjust base and term proportionately"
+
+## USPS two-letter abbreviations for the fifty US states, plus
+##   'DC' (District of Columbia)
+##   'PR' (Puerto Rico)
+## and 'XX', a fictitious state used for non-US business.
+state =
+      "AL" | "AK" | "AZ" | "AR" | "CA" | "CO" | "CT" | "DE" | "DC" | "FL"
+    | "GA" | "HI" | "ID" | "IL" | "IN" | "IA" | "KS" | "KY" | "LA" | "ME"
+    | "MD" | "MA" | "MI" | "MN" | "MS" | "MO" | "MT" | "NE" | "NV" | "NH"
+    | "NJ" | "NM" | "NY" | "NC" | "ND" | "OH" | "OK" | "OR" | "PA" | "PR"
+    | "RI" | "SC" | "SD" | "TN" | "TX" | "UT" | "VT" | "VA" | "WA" | "WV"
+    | "WI" | "WY"
+    | "XX"
+
+## International standard country code [ISO 3166-1-Alpha-2 as of 2000-08-21].
+country =
+      "AD" | "AE" | "AF" | "AG" | "AI" | "AL" | "AM" | "AN" | "AO" | "AQ"
+    | "AR" | "AS" | "AT" | "AU" | "AW" | "AZ" | "BA" | "BB" | "BD" | "BE"
+    | "BF" | "BG" | "BH" | "BI" | "BJ" | "BM" | "BN" | "BO" | "BR" | "BS"
+    | "BT" | "BV" | "BW" | "BY" | "BZ" | "CA" | "CC" | "CD" | "CF" | "CG"
+    | "CH" | "CI" | "CK" | "CL" | "CM" | "CN" | "CO" | "CR" | "CU" | "CV"
+    | "CX" | "CY" | "CZ" | "DE" | "DJ" | "DK" | "DM" | "DO" | "DZ" | "EC"
+    | "EE" | "EG" | "EH" | "ER" | "ES" | "ET" | "FI" | "FJ" | "FK" | "FM"
+    | "FO" | "FR" | "GA" | "GB" | "GD" | "GE" | "GF" | "GH" | "GI" | "GL"
+    | "GM" | "GN" | "GP" | "GQ" | "GR" | "GS" | "GT" | "GU" | "GW" | "GY"
+    | "HK" | "HM" | "HN" | "HR" | "HT" | "HU" | "ID" | "IE" | "IL" | "IN"
+    | "IO" | "IQ" | "IR" | "IS" | "IT" | "JM" | "JO" | "JP" | "KE" | "KG"
+    | "KH" | "KI" | "KM" | "KN" | "KP" | "KR" | "KW" | "KY" | "KZ" | "LA"
+    | "LB" | "LC" | "LI" | "LK" | "LR" | "LS" | "LT" | "LU" | "LV" | "LY"
+    | "MA" | "MC" | "MD" | "MG" | "MH" | "MK" | "ML" | "MM" | "MN" | "MO"
+    | "MP" | "MQ" | "MR" | "MS" | "MT" | "MU" | "MV" | "MW" | "MX" | "MY"
+    | "MZ" | "NA" | "NC" | "NE" | "NF" | "NG" | "NI" | "NL" | "NO" | "NP"
+    | "NR" | "NU" | "NZ" | "OM" | "PA" | "PE" | "PF" | "PG" | "PH" | "PK"
+    | "PL" | "PM" | "PN" | "PR" | "PS" | "PT" | "PW" | "PY" | "QA" | "RE"
+    | "RO" | "RU" | "RW" | "SA" | "SB" | "SC" | "SD" | "SE" | "SG" | "SH"
+    | "SI" | "SJ" | "SK" | "SL" | "SM" | "SN" | "SO" | "SR" | "ST" | "SV"
+    | "SY" | "SZ" | "TC" | "TD" | "TF" | "TG" | "TH" | "TJ" | "TK" | "TM"
+    | "TN" | "TO" | "TP" | "TR" | "TT" | "TV" | "TW" | "TZ" | "UA" | "UG"
+    | "UM" | "US" | "UY" | "UZ" | "VA" | "VC" | "VE" | "VG" | "VI" | "VN"
+    | "VU" | "WF" | "WS" | "YE" | "YT" | "YU" | "ZA" | "ZM" | "ZW"
+
+## 7702 definitional test, if any.
+defn_life_ins =
+      "CVAT"
+    | "GPT"
+    | "Not 7702 compliant"
+
+## Special logic, if any, to avoid a MEC. Formerly, another choice
+## tried to avoid a MEC by increasing the specified amount, but that
+## proved unworkable (e.g., because of underwriting).
+mec_avoid_method =
+      "Allow MEC"
+    | "Reduce premium"
+
+## 7702A definition of material change. For the nonce, use
+## "Earlier of" with CVAT, and "adjustment event" with GPT.
+defn_material_change =
+      "Unnecessary premium"
+    | "Benefit increase"
+    | "Later of increase or unnecessary premium"
+    | "Earlier of increase or unnecessary premium"
+    | "GPT adjustment event"
+
+## Inclusive start of a half-open interval, used e.g. for input sequences.
+from_point =
+      "Issue"
+    | "Year"
+    | "Age"
+    | "Retirement"
+
+## Exclusive end of a half-open interval used e.g. for input sequences.
+to_point =
+      "Retirement"
+    | "Year"
+    | "Age"
+    | "Maturity"
+
+## Column on optional supplemental report.
+report_column =
+      "[none]"
+    | "AttainedAge"
+    | "PolicyYear"
+    | "InforceLives"
+    | "SpecAmt"
+    | "TermSpecAmt"
+    | "CorridorFactor"
+    | "AnnGAIntRate_Current"
+    | "AnnSAIntRate_Current"
+    | "Outlay"
+    | "EeGrossPmt"
+    | "ErGrossPmt"
+    | "NetWD"
+    | "NewCashLoan"
+    | "TotalLoanBalance_Current"
+    | "TotalLoanBalance_Guaranteed"
+    | "AcctVal_Current"
+    | "AcctVal_Guaranteed"
+    | "CSVNet_Current"
+    | "CSVNet_Guaranteed"
+    | "EOYDeathBft_Current"
+    | "EOYDeathBft_Guaranteed"
+    | "BaseDeathBft_Current"
+    | "BaseDeathBft_Guaranteed"
+    | "TermPurchased_Current"
+    | "TermPurchased_Guaranteed"
+    | "COICharge_Current"
+    | "COICharge_Guaranteed"
+    | "RiderCharges_Current"
+    | "IrrCsv_Current"
+    | "IrrCsv_Guaranteed"
+    | "IrrDb_Current"
+    | "IrrDb_Guaranteed"
+    | "ExperienceReserve_Current"
+    | "NetClaims_Current"
+    | "NetCOICharge_Current"
+    | "ProjectedCoiCharge_Current"
+    | "KFactor_Current"
+    | "GrossPmt"
+    | "LoanIntAccrued_Current"
+    | "NetDeathBenefit"
+    | "DeathProceedsPaid_Current"
+    | "ClaimsPaid_Current"
+    | "AVRelOnDeath_Current"
+    | "SpecAmtLoad_Current"
+    | "GrossIntCredited_Current"
+    | "NetIntCredited_Current"
+    | "SepAcctCharges_Current"
+    | "PolicyFee_Current"
+    | "AVGenAcct_CurrentZero"
+    | "AVGenAcct_GuaranteedZero"
+    | "AVSepAcct_CurrentZero"
+    | "AVSepAcct_GuaranteedZero"
+    | "AcctVal_CurrentZero"
+    | "AcctVal_GuaranteedZero"
+    | "CSVNet_CurrentZero"
+    | "CSVNet_GuaranteedZero"
+


Property changes on: lmi/trunk/types.rnc
___________________________________________________________________
Added: svn:keywords
   + Id

Added: lmi/trunk/types.xsd
===================================================================
--- lmi/trunk/types.xsd                         (rev 0)
+++ lmi/trunk/types.xsd 2012-05-26 10:23:27 UTC (rev 5462)
@@ -0,0 +1,769 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified">
+  <!--
+    RELAX NG schema for custom types.
+
+    Copyright (C) 2012 Gregory W. Chicares.
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License version 2 as
+    published by the Free Software Foundation.
+
+    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.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+    http://savannah.nongnu.org/projects/lmi
+    email: <address@hidden>
+    snail: Chicares, 186 Belle Woods Drive, Glastonbury CT 06033, USA
+  -->
+  <!-- $Id$ -->
+  <!--
+    This schema is meant not for standalone use, but rather for
+    inclusion from other schemata.
+  -->
+  <!-- It is infeasible to validate an input sequence with a regex. -->
+  <!-- Numeric-range types. -->
+  <xs:simpleType name="nonnegative_double">
+    <xs:annotation>
+      <xs:documentation>Floating-point number greater than or equal to 
zero.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:double">
+      <xs:minInclusive value="0"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="proportion_double">
+    <xs:annotation>
+      <xs:documentation>Floating-point number between zero and one, 
inclusive.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:double">
+      <xs:minInclusive value="0"/>
+      <xs:maxInclusive value="1"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="calendar_date_int">
+    <xs:annotation>
+      <xs:documentation>Julian Day Number between 1752-09-14 and 9999-12-31, 
inclusive.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:nonNegativeInteger">
+      <xs:minInclusive value="2361222"/>
+      <xs:maxInclusive value="5373484"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="age_int">
+    <xs:annotation>
+      <xs:documentation>Attained age: integer between zero and 99, 
inclusive.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:nonNegativeInteger">
+      <xs:maxInclusive value="99"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="duration_int">
+    <xs:annotation>
+      <xs:documentation>Time interval in years: integer between zero and 100, 
inclusive.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:nonNegativeInteger">
+      <xs:maxInclusive value="100"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="month_int">
+    <xs:annotation>
+      <xs:documentation>Time interval in months: integer between zero and 
eleven, inclusive.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:nonNegativeInteger">
+      <xs:maxInclusive value="11"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <!-- Enumerations. -->
+  <xs:simpleType name="yes_or_no">
+    <xs:annotation>
+      <xs:documentation>'Yes' or 'No'. 'No' is listed first because it is 
usually the better default.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="No"/>
+      <xs:enumeration value="Yes"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gender">
+    <xs:annotation>
+      <xs:documentation>Gender. 'Unisex' is for contracts that don't 
distinguish rates by gender.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Female"/>
+      <xs:enumeration value="Male"/>
+      <xs:enumeration value="Unisex"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="smoking">
+    <xs:annotation>
+      <xs:documentation>Smoking. 'Unismoke' is for contracts that don't 
distinguish rates
+by smoking. Some contracts speak of tobacco use instead of smoking,
+but none use both, so a single set of enumerators suffices.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Smoker"/>
+      <xs:enumeration value="Nonsmoker"/>
+      <xs:enumeration value="Unismoke"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="class">
+    <xs:annotation>
+      <xs:documentation>Underwriting class. Use "Rated" for contracts with 
table ratings.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Preferred"/>
+      <xs:enumeration value="Standard"/>
+      <xs:enumeration value="Rated"/>
+      <xs:enumeration value="Ultra"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="dbopt">
+    <xs:annotation>
+      <xs:documentation>Death benefit option: 'A' = level; 'B' = increasing; 
'ROP' = return of premium.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="A"/>
+      <xs:enumeration value="B"/>
+      <xs:enumeration value="ROP"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="mode">
+    <xs:annotation>
+      <xs:documentation>Payment mode.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Annual"/>
+      <xs:enumeration value="Semiannual"/>
+      <xs:enumeration value="Quarterly"/>
+      <xs:enumeration value="Monthly"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gen_basis">
+    <xs:annotation>
+      <xs:documentation>Basis for expense and general-account 
rates.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Current"/>
+      <xs:enumeration value="Guaranteed"/>
+      <xs:enumeration value="Midpoint"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="sep_basis">
+    <xs:annotation>
+      <xs:documentation>Basis for separate-account rates.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Hypothetical"/>
+      <xs:enumeration value="Zero"/>
+      <xs:enumeration value="Half of hypothetical"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="uw_basis">
+    <xs:annotation>
+      <xs:documentation>Type of underwriting.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Medical"/>
+      <xs:enumeration value="Paramedical"/>
+      <xs:enumeration value="Nonmedical"/>
+      <xs:enumeration value="Simplified issue"/>
+      <xs:enumeration value="Guaranteed issue"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="table_rating">
+    <xs:annotation>
+      <xs:documentation>Industry-standard table rating, or 
'None'.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="None"/>
+      <xs:enumeration value="A=+25%"/>
+      <xs:enumeration value="B=+50%"/>
+      <xs:enumeration value="C=+75%"/>
+      <xs:enumeration value="D=+100%"/>
+      <xs:enumeration value="E=+125%"/>
+      <xs:enumeration value="F=+150%"/>
+      <xs:enumeration value="H=+200%"/>
+      <xs:enumeration value="J=+250%"/>
+      <xs:enumeration value="L=+300%"/>
+      <xs:enumeration value="P=+400%"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="solve_type">
+    <xs:annotation>
+      <xs:documentation>Parameter to be solved for.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="No solve"/>
+      <xs:enumeration value="Specified amount"/>
+      <xs:enumeration value="Employee premium"/>
+      <xs:enumeration value="Employer premium"/>
+      <xs:enumeration value="Loan"/>
+      <xs:enumeration value="Withdrawal"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="solve_target">
+    <xs:annotation>
+      <xs:documentation>Solve goal.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Endowment"/>
+      <xs:enumeration value="Target CSV"/>
+      <xs:enumeration value="CSV = tax basis"/>
+      <xs:enumeration value="Avoid MEC"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="pmt_strategy">
+    <xs:annotation>
+      <xs:documentation>Optional strategy to determine payment as a function 
of specified amount.
+'PmtInputScalar' is obsolete.
+'PmtMEP' uses 7702A 7PP rate.
+'Table' uses an external table (e.g., New York Table D for group 
insurance).</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="PmtInputScalar"/>
+      <xs:enumeration value="PmtMinimum"/>
+      <xs:enumeration value="PmtTarget"/>
+      <xs:enumeration value="PmtMEP"/>
+      <xs:enumeration value="PmtGLP"/>
+      <xs:enumeration value="PmtGSP"/>
+      <xs:enumeration value="PmtCorridor"/>
+      <xs:enumeration value="PmtTable"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="sa_strategy">
+    <xs:annotation>
+      <xs:documentation>Optional strategy to determine specified amount as a 
function of premium.
+'SAInputScalar' is obsolete.
+'SAMEP' uses 7702A 7PP rate.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="SAInputScalar"/>
+      <xs:enumeration value="SAMaximum"/>
+      <xs:enumeration value="SATarget"/>
+      <xs:enumeration value="SAMEP"/>
+      <xs:enumeration value="SAGLP"/>
+      <xs:enumeration value="SAGSP"/>
+      <xs:enumeration value="SACorridor"/>
+      <xs:enumeration value="SASalary"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="gen_acct_rate_type">
+    <xs:annotation>
+      <xs:documentation>General-account rate: before or after 
spread.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Credited rate"/>
+      <xs:enumeration value="Earned rate"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="sep_acct_rate_type">
+    <xs:annotation>
+      <xs:documentation>Separate-account rate: before or after 
spread.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Net rate"/>
+      <xs:enumeration value="Gross rate"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="loan_rate_type">
+    <xs:annotation>
+      <xs:documentation>Loan rate: fixed or variable.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Fixed loan rate"/>
+      <xs:enumeration value="Variable loan rate"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="fund_input_method">
+    <xs:annotation>
+      <xs:documentation>Fund-allocation overrides, for payments that aren't 
peremptorily
+allocated to the general account (e.g., employer payments on some
+group UL contracts might always go into the general account).
+Conceptually:
+'Average': use mean separate-account fee.
+'Override': use scalar input separate-account fee.
+'Choose': respect input fund allocations.
+However, there's no GUI for fund allocation yet, so, for the nonce,
+the meanings in practice are:
+'Average': allocate all payments to separate account.
+'Choose': allocate all payments to general account.
+Reason: the GUI, once it exists, will by default allocate all
+payments to the general account if no separate-account funds are
+selected.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Average fund"/>
+      <xs:enumeration value="Override fund"/>
+      <xs:enumeration value="Choose funds"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="run_order">
+    <xs:annotation>
+      <xs:documentation>Order in which different individuals in a census are 
processed.
+By default, illustrations are created independently, in series:
+one life at a time. Alternatively, all lives may be run together
+in parallel, which requires more memory but permits them to affect
+each other, as when individual charges depend on total case 
assets.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Life by life"/>
+      <xs:enumeration value="Month by month"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="survival_limit">
+    <xs:annotation>
+      <xs:documentation>Presumed moment of death, for partial 
mortality.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="No survival limit"/>
+      <xs:enumeration value="Survive to age limit"/>
+      <xs:enumeration value="Survive to duration limit"/>
+      <xs:enumeration value="Survive to life expectancy"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="term_adj_method">
+    <xs:annotation>
+      <xs:documentation>Order in which term and base are affected by changes 
in total
+specified amount.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Adjust base first"/>
+      <xs:enumeration value="Adjust term first"/>
+      <xs:enumeration value="Adjust base and term proportionately"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="state">
+    <xs:annotation>
+      <xs:documentation>USPS two-letter abbreviations for the fifty US states, 
plus
+  'DC' (District of Columbia)
+  'PR' (Puerto Rico)
+and 'XX', a fictitious state used for non-US business.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="AL"/>
+      <xs:enumeration value="AK"/>
+      <xs:enumeration value="AZ"/>
+      <xs:enumeration value="AR"/>
+      <xs:enumeration value="CA"/>
+      <xs:enumeration value="CO"/>
+      <xs:enumeration value="CT"/>
+      <xs:enumeration value="DE"/>
+      <xs:enumeration value="DC"/>
+      <xs:enumeration value="FL"/>
+      <xs:enumeration value="GA"/>
+      <xs:enumeration value="HI"/>
+      <xs:enumeration value="ID"/>
+      <xs:enumeration value="IL"/>
+      <xs:enumeration value="IN"/>
+      <xs:enumeration value="IA"/>
+      <xs:enumeration value="KS"/>
+      <xs:enumeration value="KY"/>
+      <xs:enumeration value="LA"/>
+      <xs:enumeration value="ME"/>
+      <xs:enumeration value="MD"/>
+      <xs:enumeration value="MA"/>
+      <xs:enumeration value="MI"/>
+      <xs:enumeration value="MN"/>
+      <xs:enumeration value="MS"/>
+      <xs:enumeration value="MO"/>
+      <xs:enumeration value="MT"/>
+      <xs:enumeration value="NE"/>
+      <xs:enumeration value="NV"/>
+      <xs:enumeration value="NH"/>
+      <xs:enumeration value="NJ"/>
+      <xs:enumeration value="NM"/>
+      <xs:enumeration value="NY"/>
+      <xs:enumeration value="NC"/>
+      <xs:enumeration value="ND"/>
+      <xs:enumeration value="OH"/>
+      <xs:enumeration value="OK"/>
+      <xs:enumeration value="OR"/>
+      <xs:enumeration value="PA"/>
+      <xs:enumeration value="PR"/>
+      <xs:enumeration value="RI"/>
+      <xs:enumeration value="SC"/>
+      <xs:enumeration value="SD"/>
+      <xs:enumeration value="TN"/>
+      <xs:enumeration value="TX"/>
+      <xs:enumeration value="UT"/>
+      <xs:enumeration value="VT"/>
+      <xs:enumeration value="VA"/>
+      <xs:enumeration value="WA"/>
+      <xs:enumeration value="WV"/>
+      <xs:enumeration value="WI"/>
+      <xs:enumeration value="WY"/>
+      <xs:enumeration value="XX"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="country">
+    <xs:annotation>
+      <xs:documentation>International standard country code [ISO 
3166-1-Alpha-2 as of 2000-08-21].</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="AD"/>
+      <xs:enumeration value="AE"/>
+      <xs:enumeration value="AF"/>
+      <xs:enumeration value="AG"/>
+      <xs:enumeration value="AI"/>
+      <xs:enumeration value="AL"/>
+      <xs:enumeration value="AM"/>
+      <xs:enumeration value="AN"/>
+      <xs:enumeration value="AO"/>
+      <xs:enumeration value="AQ"/>
+      <xs:enumeration value="AR"/>
+      <xs:enumeration value="AS"/>
+      <xs:enumeration value="AT"/>
+      <xs:enumeration value="AU"/>
+      <xs:enumeration value="AW"/>
+      <xs:enumeration value="AZ"/>
+      <xs:enumeration value="BA"/>
+      <xs:enumeration value="BB"/>
+      <xs:enumeration value="BD"/>
+      <xs:enumeration value="BE"/>
+      <xs:enumeration value="BF"/>
+      <xs:enumeration value="BG"/>
+      <xs:enumeration value="BH"/>
+      <xs:enumeration value="BI"/>
+      <xs:enumeration value="BJ"/>
+      <xs:enumeration value="BM"/>
+      <xs:enumeration value="BN"/>
+      <xs:enumeration value="BO"/>
+      <xs:enumeration value="BR"/>
+      <xs:enumeration value="BS"/>
+      <xs:enumeration value="BT"/>
+      <xs:enumeration value="BV"/>
+      <xs:enumeration value="BW"/>
+      <xs:enumeration value="BY"/>
+      <xs:enumeration value="BZ"/>
+      <xs:enumeration value="CA"/>
+      <xs:enumeration value="CC"/>
+      <xs:enumeration value="CD"/>
+      <xs:enumeration value="CF"/>
+      <xs:enumeration value="CG"/>
+      <xs:enumeration value="CH"/>
+      <xs:enumeration value="CI"/>
+      <xs:enumeration value="CK"/>
+      <xs:enumeration value="CL"/>
+      <xs:enumeration value="CM"/>
+      <xs:enumeration value="CN"/>
+      <xs:enumeration value="CO"/>
+      <xs:enumeration value="CR"/>
+      <xs:enumeration value="CU"/>
+      <xs:enumeration value="CV"/>
+      <xs:enumeration value="CX"/>
+      <xs:enumeration value="CY"/>
+      <xs:enumeration value="CZ"/>
+      <xs:enumeration value="DE"/>
+      <xs:enumeration value="DJ"/>
+      <xs:enumeration value="DK"/>
+      <xs:enumeration value="DM"/>
+      <xs:enumeration value="DO"/>
+      <xs:enumeration value="DZ"/>
+      <xs:enumeration value="EC"/>
+      <xs:enumeration value="EE"/>
+      <xs:enumeration value="EG"/>
+      <xs:enumeration value="EH"/>
+      <xs:enumeration value="ER"/>
+      <xs:enumeration value="ES"/>
+      <xs:enumeration value="ET"/>
+      <xs:enumeration value="FI"/>
+      <xs:enumeration value="FJ"/>
+      <xs:enumeration value="FK"/>
+      <xs:enumeration value="FM"/>
+      <xs:enumeration value="FO"/>
+      <xs:enumeration value="FR"/>
+      <xs:enumeration value="GA"/>
+      <xs:enumeration value="GB"/>
+      <xs:enumeration value="GD"/>
+      <xs:enumeration value="GE"/>
+      <xs:enumeration value="GF"/>
+      <xs:enumeration value="GH"/>
+      <xs:enumeration value="GI"/>
+      <xs:enumeration value="GL"/>
+      <xs:enumeration value="GM"/>
+      <xs:enumeration value="GN"/>
+      <xs:enumeration value="GP"/>
+      <xs:enumeration value="GQ"/>
+      <xs:enumeration value="GR"/>
+      <xs:enumeration value="GS"/>
+      <xs:enumeration value="GT"/>
+      <xs:enumeration value="GU"/>
+      <xs:enumeration value="GW"/>
+      <xs:enumeration value="GY"/>
+      <xs:enumeration value="HK"/>
+      <xs:enumeration value="HM"/>
+      <xs:enumeration value="HN"/>
+      <xs:enumeration value="HR"/>
+      <xs:enumeration value="HT"/>
+      <xs:enumeration value="HU"/>
+      <xs:enumeration value="ID"/>
+      <xs:enumeration value="IE"/>
+      <xs:enumeration value="IL"/>
+      <xs:enumeration value="IN"/>
+      <xs:enumeration value="IO"/>
+      <xs:enumeration value="IQ"/>
+      <xs:enumeration value="IR"/>
+      <xs:enumeration value="IS"/>
+      <xs:enumeration value="IT"/>
+      <xs:enumeration value="JM"/>
+      <xs:enumeration value="JO"/>
+      <xs:enumeration value="JP"/>
+      <xs:enumeration value="KE"/>
+      <xs:enumeration value="KG"/>
+      <xs:enumeration value="KH"/>
+      <xs:enumeration value="KI"/>
+      <xs:enumeration value="KM"/>
+      <xs:enumeration value="KN"/>
+      <xs:enumeration value="KP"/>
+      <xs:enumeration value="KR"/>
+      <xs:enumeration value="KW"/>
+      <xs:enumeration value="KY"/>
+      <xs:enumeration value="KZ"/>
+      <xs:enumeration value="LA"/>
+      <xs:enumeration value="LB"/>
+      <xs:enumeration value="LC"/>
+      <xs:enumeration value="LI"/>
+      <xs:enumeration value="LK"/>
+      <xs:enumeration value="LR"/>
+      <xs:enumeration value="LS"/>
+      <xs:enumeration value="LT"/>
+      <xs:enumeration value="LU"/>
+      <xs:enumeration value="LV"/>
+      <xs:enumeration value="LY"/>
+      <xs:enumeration value="MA"/>
+      <xs:enumeration value="MC"/>
+      <xs:enumeration value="MD"/>
+      <xs:enumeration value="MG"/>
+      <xs:enumeration value="MH"/>
+      <xs:enumeration value="MK"/>
+      <xs:enumeration value="ML"/>
+      <xs:enumeration value="MM"/>
+      <xs:enumeration value="MN"/>
+      <xs:enumeration value="MO"/>
+      <xs:enumeration value="MP"/>
+      <xs:enumeration value="MQ"/>
+      <xs:enumeration value="MR"/>
+      <xs:enumeration value="MS"/>
+      <xs:enumeration value="MT"/>
+      <xs:enumeration value="MU"/>
+      <xs:enumeration value="MV"/>
+      <xs:enumeration value="MW"/>
+      <xs:enumeration value="MX"/>
+      <xs:enumeration value="MY"/>
+      <xs:enumeration value="MZ"/>
+      <xs:enumeration value="NA"/>
+      <xs:enumeration value="NC"/>
+      <xs:enumeration value="NE"/>
+      <xs:enumeration value="NF"/>
+      <xs:enumeration value="NG"/>
+      <xs:enumeration value="NI"/>
+      <xs:enumeration value="NL"/>
+      <xs:enumeration value="NO"/>
+      <xs:enumeration value="NP"/>
+      <xs:enumeration value="NR"/>
+      <xs:enumeration value="NU"/>
+      <xs:enumeration value="NZ"/>
+      <xs:enumeration value="OM"/>
+      <xs:enumeration value="PA"/>
+      <xs:enumeration value="PE"/>
+      <xs:enumeration value="PF"/>
+      <xs:enumeration value="PG"/>
+      <xs:enumeration value="PH"/>
+      <xs:enumeration value="PK"/>
+      <xs:enumeration value="PL"/>
+      <xs:enumeration value="PM"/>
+      <xs:enumeration value="PN"/>
+      <xs:enumeration value="PR"/>
+      <xs:enumeration value="PS"/>
+      <xs:enumeration value="PT"/>
+      <xs:enumeration value="PW"/>
+      <xs:enumeration value="PY"/>
+      <xs:enumeration value="QA"/>
+      <xs:enumeration value="RE"/>
+      <xs:enumeration value="RO"/>
+      <xs:enumeration value="RU"/>
+      <xs:enumeration value="RW"/>
+      <xs:enumeration value="SA"/>
+      <xs:enumeration value="SB"/>
+      <xs:enumeration value="SC"/>
+      <xs:enumeration value="SD"/>
+      <xs:enumeration value="SE"/>
+      <xs:enumeration value="SG"/>
+      <xs:enumeration value="SH"/>
+      <xs:enumeration value="SI"/>
+      <xs:enumeration value="SJ"/>
+      <xs:enumeration value="SK"/>
+      <xs:enumeration value="SL"/>
+      <xs:enumeration value="SM"/>
+      <xs:enumeration value="SN"/>
+      <xs:enumeration value="SO"/>
+      <xs:enumeration value="SR"/>
+      <xs:enumeration value="ST"/>
+      <xs:enumeration value="SV"/>
+      <xs:enumeration value="SY"/>
+      <xs:enumeration value="SZ"/>
+      <xs:enumeration value="TC"/>
+      <xs:enumeration value="TD"/>
+      <xs:enumeration value="TF"/>
+      <xs:enumeration value="TG"/>
+      <xs:enumeration value="TH"/>
+      <xs:enumeration value="TJ"/>
+      <xs:enumeration value="TK"/>
+      <xs:enumeration value="TM"/>
+      <xs:enumeration value="TN"/>
+      <xs:enumeration value="TO"/>
+      <xs:enumeration value="TP"/>
+      <xs:enumeration value="TR"/>
+      <xs:enumeration value="TT"/>
+      <xs:enumeration value="TV"/>
+      <xs:enumeration value="TW"/>
+      <xs:enumeration value="TZ"/>
+      <xs:enumeration value="UA"/>
+      <xs:enumeration value="UG"/>
+      <xs:enumeration value="UM"/>
+      <xs:enumeration value="US"/>
+      <xs:enumeration value="UY"/>
+      <xs:enumeration value="UZ"/>
+      <xs:enumeration value="VA"/>
+      <xs:enumeration value="VC"/>
+      <xs:enumeration value="VE"/>
+      <xs:enumeration value="VG"/>
+      <xs:enumeration value="VI"/>
+      <xs:enumeration value="VN"/>
+      <xs:enumeration value="VU"/>
+      <xs:enumeration value="WF"/>
+      <xs:enumeration value="WS"/>
+      <xs:enumeration value="YE"/>
+      <xs:enumeration value="YT"/>
+      <xs:enumeration value="YU"/>
+      <xs:enumeration value="ZA"/>
+      <xs:enumeration value="ZM"/>
+      <xs:enumeration value="ZW"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="defn_life_ins">
+    <xs:annotation>
+      <xs:documentation>7702 definitional test, if any.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="CVAT"/>
+      <xs:enumeration value="GPT"/>
+      <xs:enumeration value="Not 7702 compliant"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="mec_avoid_method">
+    <xs:annotation>
+      <xs:documentation>Special logic, if any, to avoid a MEC. Formerly, 
another choice
+tried to avoid a MEC by increasing the specified amount, but that
+proved unworkable (e.g., because of underwriting).</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Allow MEC"/>
+      <xs:enumeration value="Reduce premium"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="defn_material_change">
+    <xs:annotation>
+      <xs:documentation>7702A definition of material change. For the nonce, use
+"Earlier of" with CVAT, and "adjustment event" with GPT.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Unnecessary premium"/>
+      <xs:enumeration value="Benefit increase"/>
+      <xs:enumeration value="Later of increase or unnecessary premium"/>
+      <xs:enumeration value="Earlier of increase or unnecessary premium"/>
+      <xs:enumeration value="GPT adjustment event"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="from_point">
+    <xs:annotation>
+      <xs:documentation>Inclusive start of a half-open interval, used e.g. for 
input sequences.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Issue"/>
+      <xs:enumeration value="Year"/>
+      <xs:enumeration value="Age"/>
+      <xs:enumeration value="Retirement"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="to_point">
+    <xs:annotation>
+      <xs:documentation>Exclusive end of a half-open interval used e.g. for 
input sequences.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="Retirement"/>
+      <xs:enumeration value="Year"/>
+      <xs:enumeration value="Age"/>
+      <xs:enumeration value="Maturity"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:simpleType name="report_column">
+    <xs:annotation>
+      <xs:documentation>Column on optional supplemental 
report.</xs:documentation>
+    </xs:annotation>
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="[none]"/>
+      <xs:enumeration value="AttainedAge"/>
+      <xs:enumeration value="PolicyYear"/>
+      <xs:enumeration value="InforceLives"/>
+      <xs:enumeration value="SpecAmt"/>
+      <xs:enumeration value="TermSpecAmt"/>
+      <xs:enumeration value="CorridorFactor"/>
+      <xs:enumeration value="AnnGAIntRate_Current"/>
+      <xs:enumeration value="AnnSAIntRate_Current"/>
+      <xs:enumeration value="Outlay"/>
+      <xs:enumeration value="EeGrossPmt"/>
+      <xs:enumeration value="ErGrossPmt"/>
+      <xs:enumeration value="NetWD"/>
+      <xs:enumeration value="NewCashLoan"/>
+      <xs:enumeration value="TotalLoanBalance_Current"/>
+      <xs:enumeration value="TotalLoanBalance_Guaranteed"/>
+      <xs:enumeration value="AcctVal_Current"/>
+      <xs:enumeration value="AcctVal_Guaranteed"/>
+      <xs:enumeration value="CSVNet_Current"/>
+      <xs:enumeration value="CSVNet_Guaranteed"/>
+      <xs:enumeration value="EOYDeathBft_Current"/>
+      <xs:enumeration value="EOYDeathBft_Guaranteed"/>
+      <xs:enumeration value="BaseDeathBft_Current"/>
+      <xs:enumeration value="BaseDeathBft_Guaranteed"/>
+      <xs:enumeration value="TermPurchased_Current"/>
+      <xs:enumeration value="TermPurchased_Guaranteed"/>
+      <xs:enumeration value="COICharge_Current"/>
+      <xs:enumeration value="COICharge_Guaranteed"/>
+      <xs:enumeration value="RiderCharges_Current"/>
+      <xs:enumeration value="IrrCsv_Current"/>
+      <xs:enumeration value="IrrCsv_Guaranteed"/>
+      <xs:enumeration value="IrrDb_Current"/>
+      <xs:enumeration value="IrrDb_Guaranteed"/>
+      <xs:enumeration value="ExperienceReserve_Current"/>
+      <xs:enumeration value="NetClaims_Current"/>
+      <xs:enumeration value="NetCOICharge_Current"/>
+      <xs:enumeration value="ProjectedCoiCharge_Current"/>
+      <xs:enumeration value="KFactor_Current"/>
+      <xs:enumeration value="GrossPmt"/>
+      <xs:enumeration value="LoanIntAccrued_Current"/>
+      <xs:enumeration value="NetDeathBenefit"/>
+      <xs:enumeration value="DeathProceedsPaid_Current"/>
+      <xs:enumeration value="ClaimsPaid_Current"/>
+      <xs:enumeration value="AVRelOnDeath_Current"/>
+      <xs:enumeration value="SpecAmtLoad_Current"/>
+      <xs:enumeration value="GrossIntCredited_Current"/>
+      <xs:enumeration value="NetIntCredited_Current"/>
+      <xs:enumeration value="SepAcctCharges_Current"/>
+      <xs:enumeration value="PolicyFee_Current"/>
+      <xs:enumeration value="AVGenAcct_CurrentZero"/>
+      <xs:enumeration value="AVGenAcct_GuaranteedZero"/>
+      <xs:enumeration value="AVSepAcct_CurrentZero"/>
+      <xs:enumeration value="AVSepAcct_GuaranteedZero"/>
+      <xs:enumeration value="AcctVal_CurrentZero"/>
+      <xs:enumeration value="AcctVal_GuaranteedZero"/>
+      <xs:enumeration value="CSVNet_CurrentZero"/>
+      <xs:enumeration value="CSVNet_GuaranteedZero"/>
+    </xs:restriction>
+  </xs:simpleType>
+</xs:schema>


Property changes on: lmi/trunk/types.xsd
___________________________________________________________________
Added: svn:keywords
   + Id




reply via email to

[Prev in Thread] Current Thread [Next in Thread]