Xerces-J 2.12.0 vs. Saxon: XSD 1.1 CTA validation errors

Yitzhak Khabinsky <[email protected]> Wed, 1 Aug 2018 18:44:26 +0000
Newsgroups gmane.text.xml.xerces-j.user
Message-ID <AM6PR09MB262962E592954AB0BCE099108D2D0@AM6PR09MB2629.eurprd09.prod.outlook.com>
Hi Mukul,

I bumped into the problems with the following:

  1.  CTA expression evaluation
  2.  base-uri(.) function

Again for comparison, Saxon doesn't complain about the CTAs and the base-uri() in the XSD.

My tinkering:

  *   I added the -fx parameter (to turn on full XPath 2.0 checks with CTA when working with XSD 1.1), but it didn't help.
  *   I wrapped the @OrganizationCode attribute in string() and xs:string() to no avail.
It continues to trip on search in sequences.
  *   The CTA expression doesn't accept "eq" instead of "=":
<xs:alternative test="@OrganizationCode eq '3TZ005'" type="AccountCode-TZ-Zantel"/>
  *   It seems that the base-uri(.) function call is failing to return the fully qualified path to the XML file that is being validated.
     *   Saxon's base-uri(.) function call correctly emits the following:
file:///d:/Temp/CDW/IFRS/Tanzania/id2938_TZ20171231_IFRS15_CBCInput_3TZ005.xml

XSD fragment in question
<xs:element name="AccountCode" type="xs:string">
        <xs:alternative test="string(@OrganizationCode) = ('1GT001', '1GT005', '1GT006', '1GT010', '1HN001', '1HN003', '1SV001', '2BO002', '2PY003', '2PY007')" type="AccountCode-GT-HN-SV-BO-PY"/>
        <xs:alternative test="@OrganizationCode = '2CO001'" type="AccountCode-CO-Mobile"/>
        <xs:alternative test="xs:string(@OrganizationCode) = ('2CO008', '2CO009')" type="AccountCode-CO-Fixed"/>
        <xs:alternative test="xs:string(@OrganizationCode) = ('3TZ001', '3TZ002', '3TZ003', '3TZ004')" type="AccountCode-TZ"/>
        <xs:alternative test="@OrganizationCode = '3TZ005'" type="AccountCode-TZ-Zantel"/>
        <xs:alternative type="xs:error"/>
</xs:element>

XSD validation errors
[Error] IFRS15_CBC_In_Zantel.xsd:80:193: c-cta-xpath: The XPath expression 'string(@OrganizationCode) = ('1GT001', '1GT005', '1GT006', '1GT010', '1HN001', '1HN003', '1SV001', '2BO002', '2PY003', '2PY007')' couldn't compile successfully in 'cta-subset' mode, during CTA evaluation.
[Error] IFRS15_CBC_In_Zantel.xsd:82:110: c-cta-xpath: The XPath expression 'xs:string(@OrganizationCode) = ('2CO008', '2CO009')' couldn't compile successfully in 'cta-subset' mode, during CTA evaluation.
[Error] IFRS15_CBC_In_Zantel.xsd:83:124: c-cta-xpath: The XPath expression 'xs:string(@OrganizationCode) = ('3TZ001', '3TZ002', '3TZ003', '3TZ004')' couldn't compile successfully in 'cta-subset' mode, during CTA evaluation.
[Error] id2938_TZ20171231_IFRS15_CBCInput_3TZ005.xml:6559:8: cvc-assertion: Assertion evaluation ('ends-with(upper-case(base-uri(.)), upper-case(concat('_', @OrganizationCode, '.xml')))') for element 'root' on schema type '#AnonType_root' did not succeed.

Command Prompt
C:\Program Files\Stylus Studio X16 XML Enterprise Suite 64-bit\bin>"c:\Program Files\Java\jre1.8.0_181\bin\java.exe"  -Xms512m -Xmx1024m -Xbootclasspath/p:path:;c:\xerces212\xercesImpl.jar;c:\xerces212\xml-apis.jar;c:\xerces212\org.eclipse.wst.xml.xpath2.processor_1.2.0.jar;c:\xerces212\icu4j.jar;c:\xerces212\resolver.jar;c:\xerces212\serializer.jar;c:\xerces212\cupv10k-runtime.jar;c:\xerces212\xercesSamples.jar jaxp.SourceValidator -xsd11 -fx -i "file:///d:/Temp/CDW/IFRS/Tanzania/id2938_TZ20171231_IFRS15_CBCInput_3TZ005.xml"

The test case XML/XSD is in the attachment.

Thank you in advance.

Regards,
Yitzhak Khabinsky
Technical Services Lead
Millicom International Services LLC
396 Alhambra Circle, Suite 1100
Coral Gables, FL  33134
Skype4B: +1 (305) 445-4172
Tel: (954) 684-8673
[email protected]<mailto:[email protected]>
www.millicom.com<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.millicom.com%2F&data=02%7C01%7CMalcolm.Stewart%40microsoft.com%7C9338023699c2494d08be08d4ad12ce55%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636323743686702678&sdata=DxQ9dfL259rpdVZ9seOAcR6bvgxRobyIerOgvTgPc90%3D&reserved=0>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
id2938_TZ20171231_IFRS15_CBCInput_3TZ005.xml (application/xml, 246.4 KB) - not displayed
IFRS15_CBC_In_Zantel.xsd (text/xml, 64 KB)
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="1.06" targetNamespace="http://www.millicom.com" xmlns="http://www.millicom.com" xpathDefaultNamespace="##targetNamespace" xmlns:saxon="http://saxon.sf.net/" xmlns:math="http://www.w3.org/2005/xpath-functions/math">
	<xs:element name="root">
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="1" maxOccurs="unbounded" ref="r"/>
			</xs:sequence>
			<xs:attribute name="OrganizationCode" inheritable="true" use="required" type="OrganizationCodeType"/>
			<xs:attribute name="VersionXSD" use="required" type="xs:normalizedString"/>
			<xs:attribute name="Currency" use="optional" type="CurrencyType"/>
			<xs:attribute name="DataFeedStart" use="required" type="xs:date"/>
			<xs:attribute name="DataFeedEnd" use="required" type="xs:date"/>
			<xs:attribute name="DataProcessDate" use="required" type="xs:dateTimeStamp"/>

			<xs:assert test="empty(r/Date[xs:date(.) lt ../../xs:date(@DataFeedStart)])" saxon:message="Rule #11: Each Date value shall be greater or equal to the @DataFeedStart attribute value" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #11</xs:documentation>
					<xs:documentation>Each Date value shall be greater or equal to the @DataFeedStart attribute value</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="empty(r/Date[xs:date(.) gt ../../xs:date(@DataFeedEnd)])" saxon:message="Rule #12: Each Date value shall be less or equal to the @DataFeedEnd attribute value" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #12</xs:documentation>
					<xs:documentation>Each Date value shall be less or equal to the @DataFeedEnd attribute value</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="ends-with(upper-case(base-uri(.)), upper-case(concat('_', @OrganizationCode, '.xml')))" saxon:message="Rule #21: OrganizationCode shall match XML file naming convention" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #21</xs:documentation>
					<xs:documentation>OrganizationCode shall match XML file naming convention</xs:documentation>
				</xs:annotation>
			</xs:assert>
		</xs:complexType>

		<!-- Unique Key -->
		<xs:key name="PK">
			<xs:selector xpath="r"/>
			<xs:field xpath="CountryCode"/>
			<xs:field xpath="BatchNumber"/>
			<xs:field xpath="SequenceNumber"/>
		</xs:key>
	</xs:element>

	<xs:element name="r">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CountryCode" type="CountryType"/>
				<xs:element name="SourceSystem" type="SourceSystem"/>
				<xs:element name="EventTarget" type="EventTarget"/>
				<xs:element name="Date" type="DateType"/>
				<xs:element name="ContractCode" type="ContractCodeType"/>
				<xs:element name="MaterialCode" type="MaterialCodeType"/>
				<xs:element name="AdjustmentEvent" type="AdjustmentEventType"/>
				<xs:element name="ParentContractCode" type="ParentContractCodeType"/>
				<xs:element name="ChildContractCode" type="ChildContractCodeType"/>
				<xs:element name="ParentChildContractFlag" type="ParentChildContractFlagType"/>
				<xs:element name="TargetMaterialCode" type="TargetMaterialCodeType"/>
				<xs:element name="StageBatchNumber" type="StageBatchNumberType"/>
				<xs:element name="StageSequenceNumber" type="StageSequenceNumberType"/>
				<xs:element name="BatchNumber" type="BatchNumberType"/>
				<xs:element name="SequenceNumber" type="SequenceNumberType"/>
				<xs:element name="BatchVersion" type="BatchVersionType"/>
				<xs:element name="StandaloneFlag" type="YesNoType"/>
				<xs:element name="Satisfaction" type="SatisfactionType"/>
				<xs:element name="MaterialCategory" type="MaterialCategoryType"/>
				<xs:element name="CreationDate" type="CreationDateType"/>
				<xs:element name="EffectiveDate" type="EffectiveDateType"/>
				<xs:element name="EndDate" type="EndDateType"/>
				<xs:element name="FirstPayment" type="FirstPaymentType"/>
				<xs:element name="MCTPayments" type="MCTPaymentsType"/>
				<xs:element name="MCTDuration" type="MCTDurationType"/>
				<xs:element name="MCTDeltaFlag" type="YesNoType"/>
				<xs:element name="Currency" type="CurrencyType"/>
				<xs:element name="TP" type="MoneyType"/>
				<xs:element name="SSP" type="MoneyType"/>
				<xs:element name="Scenario" type="ScenarioType"/>
				<xs:element name="Status" type="StatusType"/>
				<xs:element name="StatusReason" type="StatusReasonType"/>
				<xs:element name="AccountCode" type="xs:string">
					<xs:alternative test="string(@OrganizationCode) = ('1GT001', '1GT005', '1GT006', '1GT010', '1HN001', '1HN003', '1SV001', '2BO002', '2PY003', '2PY007')" type="AccountCode-GT-HN-SV-BO-PY"/>
					<xs:alternative test="@OrganizationCode = '2CO001'" type="AccountCode-CO-Mobile"/>
					<xs:alternative test="xs:string(@OrganizationCode) = ('2CO008', '2CO009')" type="AccountCode-CO-Fixed"/>
					<xs:alternative test="xs:string(@OrganizationCode) = ('3TZ001', '3TZ002', '3TZ003', '3TZ004')" type="AccountCode-TZ"/>
					<xs:alternative test="@OrganizationCode = '3TZ005'" type="AccountCode-TZ-Zantel"/>
					<xs:alternative type="xs:error"/>
				</xs:element>
				<xs:element name="MMRCode" type="MMRCodeType"/>
				<xs:element name="CategoryName" type="CategoryNameType"/>
				<xs:element name="OrganizationCode" type="OrganizationCodeType"/>
				<xs:element name="BusinessUnit" type="BusinessUnitType"/>
				<xs:element name="SubscriberTypeCode" type="SubscriberTypeCodeType"/>
				<xs:element name="PaymentType" type="PaymentType"/>
				<xs:element name="TerritoryName" type="TerritoryNameType"/>
				<xs:element name="TechnologyType" type="TechnologyType"/>
				<xs:element name="DeviceType" type="DeviceType"/>
			</xs:sequence>

			<xs:assert test="if (substring(OrganizationCode, 2, 2) eq CountryCode) then true() else false()" saxon:message="Rule #1: Characters 2-3 of the OrganizationCode shall be equal to the CountryCode value" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #1</xs:documentation>
					<xs:documentation>Characters 2-3 of the OrganizationCode shall be equal to the CountryCode value</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if (EffectiveDate ge CreationDate) then true() else false()" saxon:message="Rule #2: EffectiveDate value shall be greater or equal to CreationDate value" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #2</xs:documentation>
					<xs:documentation>EffectiveDate value shall be greater or equal to CreationDate value</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if (EndDate ge EffectiveDate) then true() else false()" saxon:message="Rule #3: EndDate value shall be greater or equal to EffectiveDate value" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #3</xs:documentation>
					<xs:documentation>EndDate value shall be greater or equal to EffectiveDate value</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<!--<xs:assert test="if ((EndDate eq CreationDate and MCTPayments eq 1) or (round((xs:date(EndDate) - xs:date(CreationDate)) div xs:dayTimeDuration('P30D')) eq xs:integer(MCTPayments))) then true() else false()"
			           saxon:message="Rule #4: The MCTPayments value shall be EndDate minus CreationDate in # of months." xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #4</xs:documentation>
					<xs:documentation>MCTPayments = (Date (i.e. EndDate) - CreationDate), in # of months</xs:documentation>
				</xs:annotation>
			</xs:assert>-->
			<!--<xs:assert test="if (((EndDate eq EffectiveDate and MCTDuration eq 1) or (round(((xs:date(EndDate) - xs:date(EffectiveDate)) div xs:dayTimeDuration('P30D')) - (0.004 * math:pow(year-from-date(EndDate) - year-from-date(EffectiveDate),2) + 0.06 * (year-from-date(EndDate) - year-from-date(EffectiveDate)) + 0.4))  eq xs:integer(MCTDuration))) or (MaterialCategory eq 'CPTC' and  MCTDuration eq 1)) then true() else false()"
			           saxon:message="Rule #5: The MCTDuration value shall be EndDate minus EffectiveDate in # of months." xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #5</xs:documentation>
					<xs:documentation>MCTDuration = (Date (i.e. EndDate) - EffectiveDate), in # of months</xs:documentation>
				</xs:annotation>
			</xs:assert>-->
			<xs:assert test="if ((MCTDuration ge MCTPayments) or (MaterialCategory eq 'CPTC' and  MCTPayments eq 1)) then true() else false()" saxon:message="Rule #6: MCTDuration value shall be greater or equal to MCTPayments value" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #6</xs:documentation>
					<xs:documentation>MCTDuration value shall be greater or equal to MCTPayments value</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<!--<xs:assert test="if ((MaterialCategory eq 'HARDWARE' and MonthlyPayment ge 0) or (MaterialCategory ne 'HARDWARE' and MonthlyPayment eq 0)) then true() else false()"
			           saxon:message="Rule #7: Only used when MaterialCategory is HARDWARE, all other cases should be 0" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #7</xs:documentation>
					<xs:documentation>Only used when MaterialCategory is HARDWARE, all other cases should be 0</xs:documentation>
				</xs:annotation>
			</xs:assert>-->
			<xs:assert test="if ((MaterialCategory eq 'CPTC' and TP lt 0) or (MaterialCategory eq 'DISCOUNT' and TP le 0) or (MaterialCategory eq 'VOUCHER' and TP eq 0) or (TP ge 0)) then true() else false()"
			           saxon:message="Rule #8: TP should be greater or equal to 0 except when MaterialCategory is DISCOUNT" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #8</xs:documentation>
					<xs:documentation>TP should be greater or equal to 0 except when MaterialCategory is DISCOUNT</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if ((StandaloneFlag eq 'Y' and SSP gt 0) or (StandaloneFlag eq 'N' and SSP eq 0)) then true() else false()" saxon:message="Rule #9: SSP value shall be 0 except when StandaloneFlag value is equal to 'Y'"
			           xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #9</xs:documentation>
					<xs:documentation>SSP value shall be 0 except when StandaloneFlag value is equal to 'Y'</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<!--<xs:assert test="if ((MCTPayments gt 0) and (MCTPayments le MCTDuration)) then true() else false()" saxon:message="Rule #10: (MCTPayments gt 0) and (MCTPayments le MCTDuration)" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #10</xs:documentation>
					<xs:documentation>(MCTPayments gt 0) and (MCTPayments le MCTDuration)</xs:documentation>
				</xs:annotation>
			</xs:assert>-->
			<xs:assert test="if ((MCTPayments ne MCTDuration and MCTDeltaFlag eq 'Y') or (MCTPayments eq MCTDuration and MCTDeltaFlag eq 'N')) then true() else false()"
			           saxon:message="Rule #13: if MCTPayments not equal MCTDuration then MCTDeltaFlag shall be equal 'Y' otherwise 'N'" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #13</xs:documentation>
					<xs:documentation>if MCTPayments not equal MCTDuration then MCTDeltaFlag shall be equal 'Y' otherwise 'N'</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if ((FirstPayment le MCTDuration) or (MaterialCategory eq 'CPTC' and  FirstPayment eq 1)) then true() else false()" saxon:message="Rule #14: FirstPayment value shall be less or equal to the MCTDuration value" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #14</xs:documentation>
					<xs:documentation>FirstPayment value shall be less or equal to the MCTDuration value</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if ((some $x in ('DISCOUNT','PENALTY FEE','CPTC') satisfies $x = MaterialCategory and StandaloneFlag ne 'N') or (some $x in ('HARDWARE','SERVICE','VOUCHER') satisfies $x = MaterialCategory and StandaloneFlag ne 'Y')) then false() else true()"
			           saxon:message="Rule #15: Standalone Flag vs. MaterialCategory" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #15</xs:documentation>
					<xs:documentation>Standalone Flag vs. MaterialCategory</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if (string-join((MaterialCategory,Satisfaction),'~') = ('DISCOUNT~POINT IN TIME','SERVICE~POINT IN TIME','CPTC~OVER TIME','HARDWARE~OVER TIME','PENALTY FEE~OVER TIME')) then false() else true()"
			           saxon:message="Rule #16: Satisfaction vs. MaterialCategory" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #16</xs:documentation>
					<xs:documentation>Satisfaction vs. MaterialCategory</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if ((some $x in ('MBL_TEL_AC', 'FIX_MBL_TEL_AC', 'DATA_TEL_AC') satisfies $x = SubscriberTypeCode and BusinessUnit eq 'MOBILE') 
				or (some $x in ('ANLG_CBL_AC', 'SATLT_TV_AC', 'WRLS_TV_AC', 'IP_TV_AC', 'FIX_TEL_AC', 'BRBND_INN_AC', 'WRLS_INN_AC') satisfies $x = SubscriberTypeCode and BusinessUnit eq 'HOME')
				or (some $x in ('MBL_TEL_AC', 'FIX_MBL_TEL_AC', 'DATA_TEL_AC', 'ANLG_CBL_AC', 'SATLT_TV_AC', 'WRLS_TV_AC', 'IP_TV_AC', 'FIX_TEL_AC', 'BRBND_INN_AC', 'WRLS_INN_AC', 'FIBER_INN_AC', 'INN_AC', 'VAS_AC', 'CLD_AC', 'DATA_CNTR_AC') satisfies $x = SubscriberTypeCode and BusinessUnit eq 'CORPORATE')
				or (some $x in ('MFS_AC') satisfies $x = SubscriberTypeCode and BusinessUnit eq 'MOBILE FINANCIAL SERVICES')) then true() else false()"
			           saxon:message="Rule #17: SubscriberTypeCode vs. BusinessUnit" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #17</xs:documentation>
					<xs:documentation>SubscriberTypeCode vs. BusinessUnit</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if ((SubscriberTypeCode = ('MBL_TEL_AC', 'FIX_MBL_TEL_AC', 'DATA_TEL_AC') and TechnologyType = ('2G','3G'))
				or (SubscriberTypeCode = ('FIX_TEL_AC') and TechnologyType = ('HFC', 'CPPR', 'FIBER', 'GPON', 'TBD'))
				or (SubscriberTypeCode = ('ANLG_CBL_AC', 'WRLS_TV_AC', 'IP_TV_AC') and TechnologyType = ('HFC', 'CPPR', 'FIBER', 'GPON', 'MMDS', 'UHF', 'TBD'))
				or (SubscriberTypeCode = ('SATLT_TV_AC') and TechnologyType = ('DTH'))
				or (SubscriberTypeCode = ('BRBND_INN_AC') and TechnologyType = ('HFC', 'CPPR', 'FIBER', 'GPON', 'WIMAX', 'TBD'))
				or (SubscriberTypeCode = ('WRLS_INN_AC') and TechnologyType = ('WIMAX'))
				or (SubscriberTypeCode = ('FIBER_INN_AC', 'INN_AC', 'VAS_AC') and TechnologyType = ('FIBER', 'GPON'))
				or (SubscriberTypeCode = ('CLD_AC', 'DATA_CNTR_AC') and TechnologyType = ('TBD'))) then true() else false()"
			           saxon:message="Rule #18: SubscriberTypeCode vs. TechnologyType" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #18</xs:documentation>
					<xs:documentation>SubscriberTypeCode vs. TechnologyType</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if ((SubscriberTypeCode = ('MBL_TEL_AC', 'FIX_MBL_TEL_AC', 'DATA_TEL_AC') and DeviceType = ('LOW END', 'SMARTPHONE', 'FEATURE PHONE', 'MODEM', 'OTHER MOBILE DEVICE'))
				or (SubscriberTypeCode != ('MBL_TEL_AC', 'FIX_MBL_TEL_AC', 'DATA_TEL_AC') and DeviceType = ('TO BE DETERMINED'))) then true() else false()"
			           saxon:message="Rule #19: SubscriberTypeCode vs. DeviceType" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #19</xs:documentation>
					<xs:documentation>SubscriberTypeCode vs. DeviceType</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<xs:assert test="if ((MaterialCategory eq 'CPTC' and substring(MMRCode, 1, 1) eq 'E') or (MaterialCategory ne 'CPTC' and substring(MMRCode, 1, 1) eq 'R')) then true() else false()" saxon:message="Rule #20: MaterialCategory vs. MMRCode first character" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #20</xs:documentation>
					<xs:documentation>MaterialCategory vs. MMRCode first character</xs:documentation>
				</xs:annotation>
			</xs:assert>
			<!--<xs:assert test="ends-with(upper-case(base-uri(.)), upper-case(concat('_', OrganizationCode, '.xml')))" saxon:message="Rule #21: OrganizationCode shall match XML file naming convention" xpathDefaultNamespace="##targetNamespace">
				<xs:annotation>
					<xs:documentation>Rule #21</xs:documentation>
					<xs:documentation>OrganizationCode shall match XML file naming convention</xs:documentation>
				</xs:annotation>
			</xs:assert>-->
		</xs:complexType>
	</xs:element>

	<xs:simpleType name="CurrencyType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="3"/>
			<xs:enumeration value="BOB"/>
			<xs:enumeration value="COP"/>
			<xs:enumeration value="USD"/>
			<xs:enumeration value="GTQ"/>
			<xs:enumeration value="HNL"/>
			<xs:enumeration value="PYG"/>
			<xs:enumeration value="NIO"/>
			<xs:enumeration value="CRC"/>
			<xs:enumeration value="GHS"/>
			<xs:enumeration value="RWF"/>
			<xs:enumeration value="XAF"/>
			<xs:enumeration value="TZS"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="CountryType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="2"/>
			<xs:enumeration value="CO"/>
			<xs:enumeration value="BO"/>
			<xs:enumeration value="PY"/>
			<xs:enumeration value="GT"/>
			<xs:enumeration value="HN"/>
			<xs:enumeration value="SV"/>
			<xs:enumeration value="NI"/>
			<xs:enumeration value="CR"/>
			<xs:enumeration value="GH"/>
			<xs:enumeration value="RW"/>
			<xs:enumeration value="TD"/>
			<xs:enumeration value="TZ"/>
			<!--<xs:enumeration value="DR"/>
			<xs:enumeration value="CH"/>
			<xs:enumeration value="SN"/>-->
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="SourceSystem">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="DWH + IFRS15 ENGINE"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="EventTarget">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="10"/>
			<xs:enumeration value="CBC"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="DateType">
		<xs:restriction base="xs:date">
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ContractCodeType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="MaterialCodeType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="AdjustmentEventType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="50"/>
			<xs:enumeration value="INCEPTION"/>
			<xs:enumeration value="RECEIVED MATERIAL RIGHT"/>
			<xs:enumeration value="CHANGED VALUE (EXISTING PO)"/>
			<xs:enumeration value="CHANGED TIMING (EXISTING PO)"/>
			<xs:enumeration value="NEW PO (CONTRACT ITEM)"/>
			<xs:enumeration value="REMOVED PO (CONTRACT ITEM)"/>
			<xs:enumeration value="USED MATERIAL RIGHT"/>
			<xs:enumeration value="SUSPENSION"/>
			<xs:enumeration value="REACTIVATION"/>
			<xs:enumeration value="EARLY EXTENSION"/>
			<xs:enumeration value="CANCELLATION WITHIN GRACE PERIOD"/>
			<xs:enumeration value="TERMINATION"/>
			<xs:enumeration value="TERMINATION WITH PENALTY"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ParentContractCodeType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ChildContractCodeType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ParentChildContractFlagType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="1"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="C"/>
			<xs:enumeration value="B"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="TargetMaterialCodeType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StageBatchNumberType">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StageSequenceNumberType">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="BatchNumberType">
		<xs:restriction base="xs:int">
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="SequenceNumberType">
		<xs:restriction base="xs:int">
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="BatchVersionType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="YesNoType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="1"/>
			<xs:enumeration value="Y"/>
			<xs:enumeration value="N"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="SatisfactionType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="POINT IN TIME"/>
			<xs:enumeration value="OVER TIME"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="MaterialCategoryType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="SERVICE"/>
			<xs:enumeration value="HARDWARE"/>
			<xs:enumeration value="DISCOUNT"/>
			<xs:enumeration value="FEE"/>
			<xs:enumeration value="PENALTY FEE"/>
			<xs:enumeration value="VOUCHER"/>
			<xs:enumeration value="CPTC"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="CreationDateType">
		<xs:restriction base="xs:date">
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EffectiveDateType">
		<xs:restriction base="xs:date">
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EndDateType">
		<xs:restriction base="xs:date">
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="MCTPaymentsType">
		<xs:restriction base="xs:integer">
			<xs:minExclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="MCTDurationType">
		<xs:restriction base="xs:integer">
			<xs:minExclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="MoneyType">
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="19"/>
			<xs:fractionDigits value="4"/>
			<xs:pattern value="[+-]?[0-9]{1,15}[.][0-9]{2,4}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="ScenarioType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="6"/>
			<xs:enumeration value="ACTUAL"/>
			<xs:enumeration value="TEST"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="StatusType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="50"/>
			<xs:enumeration value="ACTIVE"/>
			<xs:enumeration value="INACTIVE"/>
			<xs:enumeration value="INCEPTION PREPAID"/>
			<xs:enumeration value="SMARTPROMO"/>
			<xs:enumeration value="TO BE DETERMINED"/>
			<xs:enumeration value="WITHOUT_MCD"/>
			<xs:enumeration value="WITH_MCD"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="StatusReasonType">
		<xs:restriction base="xs:string">
			<xs:maxLength value="50"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="CategoryNameType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="COMMUNICATION"/>
			<xs:enumeration value="TO BE DETERMINED"/>
			<xs:enumeration value="INFORMATION"/>
			<xs:enumeration value="ENTERTAINMENT"/>
			<xs:enumeration value="SOLUTIONS"/>
			<xs:enumeration value="UNALLOCATED"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="BusinessUnitType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="30"/>
			<xs:enumeration value="MOBILE"/>
			<xs:enumeration value="CORPORATE"/>
			<xs:enumeration value="HOME"/>
			<xs:enumeration value="MOBILE FINANCIAL SERVICES"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="SubscriberTypeCodeType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="ANLG_CBL_AC"/>
			<xs:enumeration value="BRBND_INN_AC"/>
			<xs:enumeration value="CLD_AC"/>
			<xs:enumeration value="DATA_CNTR_AC"/>
			<xs:enumeration value="DATA_TEL_AC"/>
			<!--<xs:enumeration value="DGTL_AC"/>-->
			<xs:enumeration value="FIBER_INN_AC"/>
			<xs:enumeration value="FIX_MBL_TEL_AC"/>
			<xs:enumeration value="FIX_TEL_AC"/>
			<xs:enumeration value="INN_AC"/>
			<xs:enumeration value="IP_TV_AC"/>
			<xs:enumeration value="MBL_TEL_AC"/>
			<xs:enumeration value="MFS_AC"/>
			<xs:enumeration value="SATLT_TV_AC"/>
			<xs:enumeration value="VAS_AC"/>
			<xs:enumeration value="WRLS_INN_AC"/>
			<xs:enumeration value="WRLS_TV_AC"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PaymentType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="PREPAID"/>
			<xs:enumeration value="POSTPAID PURE"/>
			<xs:enumeration value="POSTPAID HYBRID"/>
			<xs:enumeration value="TO BE DETERMINED"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TerritoryNameType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="NORTH"/>
			<xs:enumeration value="SOUTH"/>
			<xs:enumeration value="EAST"/>
			<xs:enumeration value="WEST"/>
			<xs:enumeration value="CENTRAL"/>
			<xs:enumeration value="TO BE DETERMINED"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TechnologyType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="2G"/>
			<xs:enumeration value="3G"/>
			<xs:enumeration value="4G"/>
			<xs:enumeration value="FIBER"/>
			<xs:enumeration value="GPON"/>
			<xs:enumeration value="HFC"/>
			<xs:enumeration value="WIMAX"/>
			<xs:enumeration value="CPPR"/>
			<xs:enumeration value="DTH"/>
			<xs:enumeration value="UHF"/>
			<xs:enumeration value="MMDS"/>
			<xs:enumeration value="TBD"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DeviceType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="20"/>
			<xs:enumeration value="LOW END"/>
			<xs:enumeration value="SMARTPHONE"/>
			<xs:enumeration value="FEATURE PHONE"/>
			<xs:enumeration value="MODEM"/>
			<xs:enumeration value="OTHER MOBILE DEVICE"/>
			<xs:enumeration value="TO BE DETERMINED"/>
		</xs:restriction>
	</xs:simpleType>


	<xs:simpleType name="PeriodType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="7"/>
			<xs:pattern value="([2][0-9]{3})-(0[1-9]|1[0-2])|1900-01"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="AccountCode-GT-HN-SV-BO-PY">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="8"/>
			<xs:enumeration value="41010101"/>
			<xs:enumeration value="41010102"/>
			<xs:enumeration value="41010103"/>
			<xs:enumeration value="41010201"/>
			<xs:enumeration value="41010202"/>
			<xs:enumeration value="41010301"/>
			<xs:enumeration value="41010302"/>
			<xs:enumeration value="41010303"/>
			<xs:enumeration value="41010304"/>
			<xs:enumeration value="41010305"/>
			<xs:enumeration value="41010401"/>
			<xs:enumeration value="41010402"/>
			<xs:enumeration value="41010501"/>
			<xs:enumeration value="41010502"/>
			<xs:enumeration value="41010599"/>
			<xs:enumeration value="41020101"/>
			<xs:enumeration value="41020102"/>
			<xs:enumeration value="41020103"/>
			<xs:enumeration value="41020104"/>
			<xs:enumeration value="41020105"/>
			<xs:enumeration value="41020106"/>
			<xs:enumeration value="41020201"/>
			<xs:enumeration value="41020202"/>
			<xs:enumeration value="41020203"/>
			<xs:enumeration value="41020204"/>
			<xs:enumeration value="41020205"/>
			<xs:enumeration value="41020206"/>
			<xs:enumeration value="41020299"/>
			<xs:enumeration value="41020301"/>
			<xs:enumeration value="41020302"/>
			<xs:enumeration value="41020303"/>
			<xs:enumeration value="41020304"/>
			<xs:enumeration value="41020305"/>
			<xs:enumeration value="41020306"/>
			<xs:enumeration value="41020307"/>
			<xs:enumeration value="41020398"/>
			<xs:enumeration value="41020399"/>
			<xs:enumeration value="41030101"/>
			<xs:enumeration value="41030102"/>
			<xs:enumeration value="41030103"/>
			<xs:enumeration value="41030104"/>
			<xs:enumeration value="41030105"/>
			<xs:enumeration value="41030106"/>
			<xs:enumeration value="41030107"/>
			<xs:enumeration value="41030109"/>
			<xs:enumeration value="41030110"/>
			<xs:enumeration value="41030111"/>
			<xs:enumeration value="41030112"/>
			<xs:enumeration value="41030199"/>
			<xs:enumeration value="41030200"/>
			<xs:enumeration value="41030201"/>
			<xs:enumeration value="41040101"/>
			<xs:enumeration value="41040102"/>
			<xs:enumeration value="41040103"/>
			<xs:enumeration value="41040104"/>
			<xs:enumeration value="41040105"/>
			<xs:enumeration value="41040106"/>
			<xs:enumeration value="41040107"/>
			<xs:enumeration value="41040108"/>
			<xs:enumeration value="41040109"/>
			<xs:enumeration value="41040110"/>
			<xs:enumeration value="41040111"/>
			<xs:enumeration value="41040112"/>
			<xs:enumeration value="41040113"/>
			<xs:enumeration value="41040114"/>
			<xs:enumeration value="41040115"/>
			<xs:enumeration value="41040199"/>
			<xs:enumeration value="41070101"/>
			<xs:enumeration value="41070102"/>
			<xs:enumeration value="41070103"/>
			<xs:enumeration value="41070199"/>
			<xs:enumeration value="41080101"/>
			<xs:enumeration value="41080102"/>
			<xs:enumeration value="41080103"/>
			<xs:enumeration value="41080104"/>
			<xs:enumeration value="41080105"/>
			<xs:enumeration value="41080106"/>
			<xs:enumeration value="41080109"/>
			<xs:enumeration value="41080110"/>
			<xs:enumeration value="41080111"/>
			<xs:enumeration value="41080115"/>
			<xs:enumeration value="41080117"/>
			<xs:enumeration value="41080118"/>
			<xs:enumeration value="41080119"/>
			<xs:enumeration value="41080123"/>
			<xs:enumeration value="41080124"/>
			<xs:enumeration value="41080125"/>
			<xs:enumeration value="41080130"/>
			<xs:enumeration value="41080131"/>
			<xs:enumeration value="41080132"/>
			<xs:enumeration value="41080133"/>
			<xs:enumeration value="41080134"/>
			<xs:enumeration value="41080135"/>
			<xs:enumeration value="41080136"/>
			<xs:enumeration value="41080137"/>
			<xs:enumeration value="41080138"/>
			<xs:enumeration value="41080139"/>
			<xs:enumeration value="41080141"/>
			<xs:enumeration value="41080142"/>
			<xs:enumeration value="41080145"/>
			<xs:enumeration value="41080199"/>
			<xs:enumeration value="41090001"/>
			<xs:enumeration value="41090002"/>
			<xs:enumeration value="41090101"/>
			<xs:enumeration value="41090102"/>
			<xs:enumeration value="41090103"/>
			<xs:enumeration value="41090104"/>
			<xs:enumeration value="41090197"/>
			<xs:enumeration value="41100101"/>
			<xs:enumeration value="41100102"/>
			<xs:enumeration value="41100103"/>
			<xs:enumeration value="41100104"/>
			<xs:enumeration value="41100105"/>
			<xs:enumeration value="41100106"/>
			<xs:enumeration value="41100107"/>
			<xs:enumeration value="41100108"/>
			<xs:enumeration value="41100109"/>
			<xs:enumeration value="41100110"/>
			<xs:enumeration value="41100111"/>
			<xs:enumeration value="41100201"/>
			<xs:enumeration value="41100202"/>
			<xs:enumeration value="41100203"/>
			<xs:enumeration value="41100204"/>
			<xs:enumeration value="41190001"/>
			<xs:enumeration value="41190002"/>
			<xs:enumeration value="42010101"/>
			<xs:enumeration value="42010102"/>
			<xs:enumeration value="42020101"/>
			<xs:enumeration value="42020104"/>
			<xs:enumeration value="42020105"/>
			<xs:enumeration value="42020106"/>
			<xs:enumeration value="42020107"/>
			<xs:enumeration value="42020199"/>
			<xs:enumeration value="42030101"/>
			<xs:enumeration value="42030102"/>
			<xs:enumeration value="42030103"/>
			<xs:enumeration value="42030104"/>
			<xs:enumeration value="42030105"/>
			<xs:enumeration value="42030106"/>
			<xs:enumeration value="61030101"/>
			<xs:enumeration value="61030102"/>
			<xs:enumeration value="61030103"/>
			<xs:enumeration value="61030104"/>
			<xs:enumeration value="61030105"/>
			<xs:enumeration value="61030106"/>
			<xs:enumeration value="61030107"/>
			<xs:enumeration value="61030108"/>
			<xs:enumeration value="61030201"/>
			<xs:enumeration value="61030202"/>
			<xs:enumeration value="61030204"/>
			<xs:enumeration value="61030205"/>
			<xs:enumeration value="61030206"/>
			<xs:enumeration value="61030207"/>
			<xs:enumeration value="61030218"/>
			<xs:enumeration value="61030235"/>
			<xs:enumeration value="61030236"/>
			<xs:enumeration value="61030237"/>
			<xs:enumeration value="61030401"/>
			<xs:enumeration value="61030402"/>
			<xs:enumeration value="61030403"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="MMRCodeType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="6"/>
			<xs:enumeration value="R19001"/>
			<xs:enumeration value="R30102"/>
			<xs:enumeration value="R30200"/>
			<xs:enumeration value="R30210"/>
			<xs:enumeration value="R30220"/>
			<xs:enumeration value="R30300"/>
			<xs:enumeration value="R30301"/>
			<xs:enumeration value="R30302"/>
			<xs:enumeration value="R30400"/>
			<xs:enumeration value="R30501"/>
			<xs:enumeration value="R30502"/>
			<xs:enumeration value="R30600"/>
			<xs:enumeration value="R30691"/>
			<xs:enumeration value="R30692"/>
			<xs:enumeration value="R30694"/>
			<xs:enumeration value="R30695"/>
			<xs:enumeration value="R30700"/>
			<xs:enumeration value="R30701"/>
			<xs:enumeration value="R30702"/>
			<xs:enumeration value="R30703"/>
			<xs:enumeration value="R30800"/>
			<xs:enumeration value="R30802"/>
			<xs:enumeration value="R30900"/>
			<xs:enumeration value="R30902"/>
			<xs:enumeration value="R32100"/>
			<xs:enumeration value="R33301"/>
			<xs:enumeration value="R33302"/>
			<xs:enumeration value="R33601"/>
			<xs:enumeration value="R33602"/>
			<xs:enumeration value="R33603"/>
			<xs:enumeration value="R33604"/>
			<xs:enumeration value="R33605"/>
			<xs:enumeration value="R33701"/>
			<xs:enumeration value="R33702"/>
			<xs:enumeration value="R33703"/>
			<xs:enumeration value="R33704"/>
			<xs:enumeration value="R33705"/>
			<xs:enumeration value="R33706"/>
			<xs:enumeration value="R33707"/>
			<xs:enumeration value="R33708"/>
			<xs:enumeration value="R33709"/>
			<xs:enumeration value="R34101"/>
			<xs:enumeration value="R34102"/>
			<xs:enumeration value="R34104"/>
			<xs:enumeration value="R34105"/>
			<xs:enumeration value="R34106"/>
			<xs:enumeration value="R34107"/>
			<xs:enumeration value="R34108"/>
			<xs:enumeration value="R35000"/>
			<xs:enumeration value="R35001"/>
			<xs:enumeration value="R35002"/>
			<xs:enumeration value="R35003"/>
			<xs:enumeration value="R35004"/>
			<xs:enumeration value="R35005"/>
			<xs:enumeration value="R35006"/>
			<xs:enumeration value="R35007"/>
			<xs:enumeration value="R35008"/>
			<xs:enumeration value="R35900"/>
			<xs:enumeration value="R35950"/>
			<xs:enumeration value="R35960"/>
			<xs:enumeration value="R36001"/>
			<xs:enumeration value="R36002"/>
			<xs:enumeration value="R36003"/>
			<xs:enumeration value="R36005"/>
			<xs:enumeration value="R36006"/>
			<xs:enumeration value="R36007"/>
			<xs:enumeration value="R36008"/>
			<xs:enumeration value="R36009"/>
			<xs:enumeration value="R36010"/>
			<xs:enumeration value="R36011"/>
			<xs:enumeration value="R36012"/>
			<xs:enumeration value="R36013"/>
			<xs:enumeration value="R36101"/>
			<xs:enumeration value="R36102"/>
			<xs:enumeration value="R36103"/>
			<xs:enumeration value="R36900"/>
			<xs:enumeration value="R37001"/>
			<xs:enumeration value="R37002"/>
			<xs:enumeration value="R37003"/>
			<xs:enumeration value="R37005"/>
			<xs:enumeration value="R37006"/>
			<xs:enumeration value="R37010"/>
			<xs:enumeration value="R37012"/>
			<xs:enumeration value="R37013"/>
			<xs:enumeration value="R37014"/>
			<xs:enumeration value="R37017"/>
			<xs:enumeration value="R37018"/>
			<xs:enumeration value="R37019"/>
			<xs:enumeration value="R37020"/>
			<xs:enumeration value="R37021"/>
			<xs:enumeration value="R37023"/>
			<xs:enumeration value="R37024"/>
			<xs:enumeration value="R37025"/>
			<xs:enumeration value="R37026"/>
			<xs:enumeration value="R37027"/>
			<xs:enumeration value="R37028"/>
			<xs:enumeration value="R37029"/>
			<xs:enumeration value="R37030"/>
			<xs:enumeration value="R37500"/>
			<xs:enumeration value="R37501"/>
			<xs:enumeration value="R38000"/>
			<xs:enumeration value="R39001"/>
			<xs:enumeration value="R39002"/>
			<xs:enumeration value="R39009"/>
			<xs:enumeration value="R39010"/>
			<xs:enumeration value="R39011"/>
			<xs:enumeration value="R39012"/>
			<xs:enumeration value="R39013"/>
			<xs:enumeration value="R39014"/>
			<xs:enumeration value="R39015"/>
			<xs:enumeration value="R39901"/>
			<xs:enumeration value="R39902"/>
			<xs:enumeration value="R49901"/>
			<xs:enumeration value="R49902"/>
			<xs:enumeration value="R50000"/>
			<xs:enumeration value="R50001"/>
			<xs:enumeration value="R60001"/>
			<xs:enumeration value="R60002"/>
			<xs:enumeration value="R60003"/>
			<xs:enumeration value="R60004"/>
			<xs:enumeration value="R60005"/>
			<xs:enumeration value="R60051"/>
			<xs:enumeration value="R60053"/>
			<xs:enumeration value="R60080"/>
			<xs:enumeration value="R60081"/>
			<xs:enumeration value="R60082"/>
			<xs:enumeration value="R60089"/>
			<xs:enumeration value="R60090"/>
			<xs:enumeration value="R60095"/>
			<xs:enumeration value="R60101"/>
			<xs:enumeration value="R60102"/>
			<xs:enumeration value="R60103"/>
			<xs:enumeration value="R60104"/>
			<xs:enumeration value="R60105"/>
			<xs:enumeration value="R60201"/>
			<xs:enumeration value="R60202"/>
			<xs:enumeration value="R60203"/>
			<xs:enumeration value="R60204"/>
			<xs:enumeration value="R69901"/>
			<xs:enumeration value="R69902"/>
			<xs:enumeration value="R90001"/>
			<!--<xs:enumeration value="R10000"/>-->
			<xs:enumeration value="R30801"/>
			<xs:enumeration value="R30803"/>
			<xs:enumeration value="R20000"/>
			<xs:enumeration value="R30602"/>
			<xs:enumeration value="R30601"/>
			<xs:enumeration value="R60055"/>
			<xs:enumeration value="R33900"/>
			<xs:enumeration value="R33101"/>
			<xs:enumeration value="R33102"/>
			<xs:enumeration value="R34103"/>
			<xs:enumeration value="R34900"/>
			<xs:enumeration value="R36000"/>
			<xs:enumeration value="R60052"/>
			<xs:enumeration value="R30693"/>
			<xs:enumeration value="R37008"/>
			<xs:enumeration value="R60056"/>
			<xs:enumeration value="R91001"/>
			<xs:enumeration value="R91002"/>
			<xs:enumeration value="R37004"/>
			<xs:enumeration value="R37011"/>
			<xs:enumeration value="R37007"/>
			<xs:enumeration value="R19002"/>
			<xs:enumeration value="R95011"/>
			<xs:enumeration value="R95050"/>
			<xs:enumeration value="R95012"/>
			<xs:enumeration value="R90002"/>
			<xs:enumeration value="R95013"/>
			<xs:enumeration value="R95022"/>
			<xs:enumeration value="R95025"/>
			<xs:enumeration value="R96000"/>
			<xs:enumeration value="R96050"/>
			<xs:enumeration value="R96099"/>
			<xs:enumeration value="E12003"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="OrganizationCodeType">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="6"/>
			<xs:enumeration value="1CR001"/>
			<xs:enumeration value="1CR002"/>
			<xs:enumeration value="1CR003"/>
			<xs:enumeration value="1GT000"/>
			<xs:enumeration value="1GT001"/>
			<xs:enumeration value="1GT002"/>
			<xs:enumeration value="1GT003"/>
			<xs:enumeration value="1GT004"/>
			<xs:enumeration value="1GT005"/>
			<xs:enumeration value="1GT006"/>
			<xs:enumeration value="1GT007"/>
			<xs:enumeration value="1GT008"/>
			<xs:enumeration value="1GT009"/>
			<xs:enumeration value="1GT010"/>
			<xs:enumeration value="1GT011"/>
			<xs:enumeration value="1GT012"/>
			<xs:enumeration value="1GT013"/>
			<xs:enumeration value="1GT014"/>
			<xs:enumeration value="1GT015"/>
			<xs:enumeration value="1GT016"/>
			<xs:enumeration value="1GT017"/>
			<xs:enumeration value="1HN001"/>
			<xs:enumeration value="1HN002"/>
			<xs:enumeration value="1HN003"/>
			<xs:enumeration value="1HN004"/>
			<xs:enumeration value="1HN005"/>
			<xs:enumeration value="1HN006"/>
			<xs:enumeration value="1HN007"/>
			<xs:enumeration value="1HN008"/>
			<xs:enumeration value="1HN009"/>
			<xs:enumeration value="1HNCEL"/>
			<xs:enumeration value="1HNMCB"/>
			<xs:enumeration value="1HNNAV"/>
			<xs:enumeration value="1NI001"/>
			<xs:enumeration value="1NI002"/>
			<xs:enumeration value="1NI003"/>
			<xs:enumeration value="1NI004"/>
			<xs:enumeration value="1NI005"/>
			<xs:enumeration value="1SV001"/>
			<xs:enumeration value="1SV002"/>
			<xs:enumeration value="1SV003"/>
			<xs:enumeration value="1SV004"/>
			<xs:enumeration value="1SV005"/>
			<xs:enumeration value="1SV006"/>
			<xs:enumeration value="1SV007"/>
			<xs:enumeration value="1SV008"/>
			<xs:enumeration value="1SV009"/>
			<xs:enumeration value="1SV010"/>
			<xs:enumeration value="1SV011"/>
			<xs:enumeration value="1SV012"/>
			<xs:enumeration value="1SV013"/>
			<xs:enumeration value="1SV014"/>
			<xs:enumeration value="1SV015"/>
			<xs:enumeration value="1SV016"/>
			<xs:enumeration value="1SV017"/>
			<xs:enumeration value="1SV018"/>
			<xs:enumeration value="1SV019"/>
			<xs:enumeration value="1SV020"/>
			<xs:enumeration value="1SV021"/>
			<xs:enumeration value="1SV022"/>
			<xs:enumeration value="1SV023"/>
			<xs:enumeration value="1SVMCB"/>
			<xs:enumeration value="1SVTLM"/>
			<xs:enumeration value="2BO001"/>
			<xs:enumeration value="2BO002"/>
			<xs:enumeration value="2BO003"/>
			<xs:enumeration value="2CO001"/>
			<xs:enumeration value="2CO002"/>
			<xs:enumeration value="2CO003"/>
			<xs:enumeration value="2CO004"/>
			<xs:enumeration value="2CO008"/>
			<xs:enumeration value="2CO009"/>
			<xs:enumeration value="2CO010"/>
			<xs:enumeration value="2CO011"/>
			<xs:enumeration value="2CO012"/>
			<xs:enumeration value="2PY001"/>
			<xs:enumeration value="2PY002"/>
			<xs:enumeration value="2PY003"/>
			<xs:enumeration value="2PY004"/>
			<xs:enumeration value="2PY005"/>
			<xs:enumeration value="2PY006"/>
			<xs:enumeration value="2PY007"/>
			<xs:enumeration value="2PY008"/>
			<xs:enumeration value="2PYA00"/>
			<xs:enumeration value="2PYA01"/>
			<xs:enumeration value="2PYA02"/>
			<xs:enumeration value="2PYA03"/>
			<xs:enumeration value="2PYA04"/>
			<xs:enumeration value="2PYA05"/>
			<xs:enumeration value="3GH001"/>
			<xs:enumeration value="3GH002"/>
			<xs:enumeration value="3GH003"/>
			<xs:enumeration value="3RW001"/>
			<xs:enumeration value="3TD001"/>
			<xs:enumeration value="3TD002"/>
			<xs:enumeration value="3TZ001"/>
			<xs:enumeration value="3TZ002"/>
			<xs:enumeration value="3TZ003"/>
			<xs:enumeration value="3TZ004"/>
			<xs:enumeration value="3TZ005"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="FirstPaymentType">
		<xs:restriction base="xs:positiveInteger">
			<xs:assertion test="$value ge 1"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="QuantityType">
		<xs:restriction base="xs:positiveInteger">
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="AccountCode-CO-Mobile">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="10"/>
			<xs:enumeration value="4210271001"/>
			<xs:enumeration value="4210271002"/>
			<xs:enumeration value="4210271009"/>
			<xs:enumeration value="4210271012"/>
			<xs:enumeration value="4210271013"/>
			<xs:enumeration value="4210271014"/>
			<xs:enumeration value="4210271025"/>
			<xs:enumeration value="4210271026"/>
			<xs:enumeration value="4210272001"/>
			<xs:enumeration value="4210272002"/>
			<xs:enumeration value="4210272003"/>
			<xs:enumeration value="4210272008"/>
			<xs:enumeration value="4210272010"/>
			<xs:enumeration value="4210274001"/>
			<xs:enumeration value="4295021007"/>
			<xs:enumeration value="4295021008"/>
			<xs:enumeration value="4295021009"/>
			<xs:enumeration value="4295021010"/>
			<xs:enumeration value="4295022002"/>
			<xs:enumeration value="4295022007"/>
			<xs:enumeration value="4295022010"/>
			<xs:enumeration value="4335112003"/>
			<xs:enumeration value="4335112004"/>
			<xs:enumeration value="4335112005"/>
			<xs:enumeration value="4335112009"/>
			<xs:enumeration value="4335112011"/>
			<xs:enumeration value="4335112012"/>
			<xs:enumeration value="4335112013"/>
			<xs:enumeration value="4335112014"/>
			<xs:enumeration value="4335112015"/>
			<xs:enumeration value="4335112017"/>
			<xs:enumeration value="4335112018"/>
			<xs:enumeration value="4335112019"/>
			<xs:enumeration value="4335112020"/>
			<xs:enumeration value="4335112021"/>
			<xs:enumeration value="4335112022"/>
			<xs:enumeration value="4335122001"/>
			<xs:enumeration value="4335122002"/>
			<xs:enumeration value="4335122003"/>
			<xs:enumeration value="4335122005"/>
			<xs:enumeration value="4335122007"/>
			<xs:enumeration value="4335122008"/>
			<xs:enumeration value="4335122009"/>
			<xs:enumeration value="4335122013"/>
			<xs:enumeration value="4335122014"/>
			<xs:enumeration value="4335122015"/>
			<xs:enumeration value="4335122018"/>
			<xs:enumeration value="4335122023"/>
			<xs:enumeration value="4335122025"/>
			<xs:enumeration value="4335122026"/>
			<xs:enumeration value="4335122027"/>
			<xs:enumeration value="4335122029"/>
			<xs:enumeration value="4335152003"/>
			<xs:enumeration value="4335152004"/>
			<xs:enumeration value="4335152005"/>
			<xs:enumeration value="4335152037"/>
			<xs:enumeration value="4335170800"/>
			<xs:enumeration value="4335170802"/>
			<xs:enumeration value="4335170803"/>
			<xs:enumeration value="4335170804"/>
			<xs:enumeration value="4335170805"/>
			<xs:enumeration value="4335170806"/>
			<xs:enumeration value="4335170816"/>
			<xs:enumeration value="4335170817"/>
			<xs:enumeration value="4335170819"/>
			<xs:enumeration value="4335170820"/>
			<xs:enumeration value="4335170821"/>
			<xs:enumeration value="4335170822"/>
			<xs:enumeration value="4335170823"/>
			<xs:enumeration value="4335170824"/>
			<xs:enumeration value="4335170826"/>
			<xs:enumeration value="4335170828"/>
			<xs:enumeration value="4335170829"/>
			<xs:enumeration value="4335170830"/>
			<xs:enumeration value="4335170833"/>
			<xs:enumeration value="4335170841"/>
			<xs:enumeration value="4335170847"/>
			<xs:enumeration value="4335170851"/>
			<xs:enumeration value="4335170855"/>
			<xs:enumeration value="4335182005"/>
			<xs:enumeration value="4335182008"/>
			<xs:enumeration value="4335182010"/>
			<xs:enumeration value="4335182015"/>
			<xs:enumeration value="4335182018"/>
			<xs:enumeration value="4335182020"/>
			<xs:enumeration value="4335182022"/>
			<xs:enumeration value="4335182025"/>
			<xs:enumeration value="4335182027"/>
			<xs:enumeration value="4335182028"/>
			<xs:enumeration value="4335182029"/>
			<xs:enumeration value="4335182030"/>
			<xs:enumeration value="4335182031"/>
			<xs:enumeration value="4335182032"/>
			<xs:enumeration value="4335182033"/>
			<xs:enumeration value="4335182034"/>
			<xs:enumeration value="4335182035"/>
			<xs:enumeration value="4335182036"/>
			<xs:enumeration value="4335182037"/>
			<xs:enumeration value="4335182038"/>
			<xs:enumeration value="4335182039"/>
			<xs:enumeration value="4335182040"/>
			<xs:enumeration value="4335182045"/>
			<xs:enumeration value="4335182046"/>
			<xs:enumeration value="4335191001"/>
			<xs:enumeration value="4335191002"/>
			<xs:enumeration value="4335422001"/>
			<xs:enumeration value="4335422002"/>
			<xs:enumeration value="4335422008"/>
			<xs:enumeration value="4335422017"/>
			<xs:enumeration value="4335422024"/>
			<xs:enumeration value="4335422025"/>
			<xs:enumeration value="4335422029"/>
			<xs:enumeration value="4335422032"/>
			<xs:enumeration value="4335422033"/>
			<xs:enumeration value="4335422034"/>
			<xs:enumeration value="4335422037"/>
			<xs:enumeration value="4335422038"/>
			<xs:enumeration value="4335422041"/>
			<xs:enumeration value="4335422043"/>
			<xs:enumeration value="4335422044"/>
			<xs:enumeration value="4335422046"/>
			<xs:enumeration value="4335422049"/>
			<xs:enumeration value="4335422050"/>
			<xs:enumeration value="4335422052"/>
			<xs:enumeration value="4335422053"/>
			<xs:enumeration value="4335422054"/>
			<xs:enumeration value="4335422055"/>
			<xs:enumeration value="4335422057"/>
			<xs:enumeration value="4335422058"/>
			<xs:enumeration value="4335422059"/>
			<xs:enumeration value="4335422062"/>
			<xs:enumeration value="4335422064"/>
			<xs:enumeration value="4335422066"/>
			<xs:enumeration value="4335422067"/>
			<xs:enumeration value="4335422068"/>
			<xs:enumeration value="4335422070"/>
			<xs:enumeration value="4335422072"/>
			<xs:enumeration value="4335422093"/>
			<xs:enumeration value="4335422094"/>
			<xs:enumeration value="4335492033"/>
			<xs:enumeration value="4335492034"/>
			<xs:enumeration value="4335492035"/>
			<xs:enumeration value="4335492037"/>
			<xs:enumeration value="4335492045"/>
			<xs:enumeration value="4335492046"/>
			<xs:enumeration value="4335492048"/>
			<xs:enumeration value="4335492049"/>
			<xs:enumeration value="4335492050"/>
			<xs:enumeration value="4335495023"/>
			<xs:enumeration value="4335497001"/>
			<xs:enumeration value="4335497002"/>
			<xs:enumeration value="4335497055"/>
			<xs:enumeration value="4335902001"/>
			<xs:enumeration value="4335902004"/>
			<xs:enumeration value="4810082003"/>
			<xs:enumeration value="4810902001"/>
			<xs:enumeration value="4810902002"/>
			<xs:enumeration value="4810902003"/>
			<xs:enumeration value="4810902005"/>
			<xs:enumeration value="4335422065"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="AccountCode-CO-Fixed">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="10"/>
			<xs:enumeration value="4210260000"/>
			<xs:enumeration value="4210270000"/>
			<xs:enumeration value="4210900000"/>
			<xs:enumeration value="4295020000"/>
			<xs:enumeration value="4333060010"/>
			<xs:enumeration value="4333060020"/>
			<xs:enumeration value="4333060030"/>
			<xs:enumeration value="4333060040"/>
			<xs:enumeration value="4333060050"/>
			<xs:enumeration value="4333060090"/>
			<xs:enumeration value="4333900000"/>
			<xs:enumeration value="4335450000"/>
			<xs:enumeration value="4335450010"/>
			<xs:enumeration value="4335460000"/>
			<xs:enumeration value="4335470000"/>
			<xs:enumeration value="4335480000"/>
			<xs:enumeration value="4335480001"/>
			<xs:enumeration value="4335480010"/>
			<xs:enumeration value="4335480011"/>
			<xs:enumeration value="4335490000"/>
			<xs:enumeration value="4335490010"/>
			<xs:enumeration value="4335490020"/>
			<xs:enumeration value="4335490030"/>
			<xs:enumeration value="4335490040"/>
			<xs:enumeration value="4335490050"/>
			<xs:enumeration value="4335490001"/>
			<xs:enumeration value="4335490002"/>
			<xs:enumeration value="4335490060"/>
			<xs:enumeration value="4335490070"/>
			<xs:enumeration value="4335490080"/>
			<xs:enumeration value="4335490090"/>
			<xs:enumeration value="4335490091"/>
			<xs:enumeration value="4335490092"/>
			<xs:enumeration value="4335490100"/>
			<xs:enumeration value="4335490118"/>
			<xs:enumeration value="4335500000"/>
			<xs:enumeration value="4335500020"/>
			<xs:enumeration value="4335500030"/>
			<xs:enumeration value="4335500010"/>
			<xs:enumeration value="4335520000"/>
			<xs:enumeration value="4335900000"/>
			<xs:enumeration value="4335900010"/>
			<xs:enumeration value="4335900030"/>
			<xs:enumeration value="4335900020"/>
			<xs:enumeration value="4335900090"/>
			<xs:enumeration value="4370030000"/>
			<xs:enumeration value="4370030010"/>
			<xs:enumeration value="4370900000"/>
			<xs:enumeration value="4390020000"/>
			<xs:enumeration value="4390040000"/>
			<xs:enumeration value="4390050000"/>
			<xs:enumeration value="4390070000"/>
			<xs:enumeration value="4390140000"/>
			<xs:enumeration value="4390170000"/>
			<xs:enumeration value="4390270000"/>
			<xs:enumeration value="4390900000"/>
			<xs:enumeration value="4390900010"/>
			<xs:enumeration value="4390900020"/>
			<xs:enumeration value="4390910000"/>
			<xs:enumeration value="4808900500"/>
			<xs:enumeration value="4801020000"/>
			<xs:enumeration value="5120090000"/>
			<xs:enumeration value="4333060011"/>
			<xs:enumeration value="4333060021"/>
			<xs:enumeration value="4370030011"/>
			<xs:enumeration value="4335450020"/>
			<xs:enumeration value="4335900040"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="AccountCode-TZ">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="7"/>
			<xs:enumeration value="1250007"/>
			<!--<xs:enumeration value="60"/>
			<xs:enumeration value="6110"/>-->
			<xs:enumeration value="6110001"/>
			<xs:enumeration value="6110002"/>
			<xs:enumeration value="6110033"/>
			<xs:enumeration value="6110034"/>
			<xs:enumeration value="6110035"/>
			<xs:enumeration value="6111"/>
			<xs:enumeration value="6111001"/>
			<xs:enumeration value="6112"/>
			<xs:enumeration value="6112001"/>
			<xs:enumeration value="6112002"/>
			<xs:enumeration value="6112003"/>
			<xs:enumeration value="6112004"/>
			<xs:enumeration value="6112005"/>
			<xs:enumeration value="6112006"/>
			<xs:enumeration value="6112007"/>
			<xs:enumeration value="6112008"/>
			<xs:enumeration value="6112009"/>
			<xs:enumeration value="6112010"/>
			<xs:enumeration value="6112011"/>
			<xs:enumeration value="6112012"/>
			<xs:enumeration value="6112013"/>
			<xs:enumeration value="6112014"/>
			<xs:enumeration value="6112015"/>
			<xs:enumeration value="6112016"/>
			<xs:enumeration value="6112017"/>
			<xs:enumeration value="6112018"/>
			<xs:enumeration value="6112019"/>
			<xs:enumeration value="6112020"/>
			<xs:enumeration value="6112021"/>
			<xs:enumeration value="6112022"/>
			<xs:enumeration value="6112023"/>
			<xs:enumeration value="6112024"/>
			<xs:enumeration value="6112025"/>
			<xs:enumeration value="6112026"/>
			<xs:enumeration value="6112027"/>
			<xs:enumeration value="6112028"/>
			<xs:enumeration value="6112029"/>
			<xs:enumeration value="6112030"/>
			<xs:enumeration value="6112031"/>
			<xs:enumeration value="6112032"/>
			<xs:enumeration value="6112033"/>
			<xs:enumeration value="6112034"/>
			<xs:enumeration value="6112035"/>
			<xs:enumeration value="6112036"/>
			<xs:enumeration value="6112037"/>
			<xs:enumeration value="6112038"/>
			<xs:enumeration value="6112039"/>
			<xs:enumeration value="6112040"/>
			<xs:enumeration value="6112041"/>
			<xs:enumeration value="6112042"/>
			<xs:enumeration value="6112043"/>
			<xs:enumeration value="6112044"/>
			<xs:enumeration value="6112045"/>
			<xs:enumeration value="6112046"/>
			<xs:enumeration value="6112047"/>
			<xs:enumeration value="6112048"/>
			<xs:enumeration value="6112049"/>
			<xs:enumeration value="6112050"/>
			<xs:enumeration value="6112051"/>
			<xs:enumeration value="6112053"/>
			<xs:enumeration value="6130002"/>
			<xs:enumeration value="6134"/>
			<xs:enumeration value="6134001"/>
			<xs:enumeration value="6134002"/>
			<!--<xs:enumeration value="6134003"/>
			<xs:enumeration value="6134004"/>-->
			<xs:enumeration value="6134005"/>
			<xs:enumeration value="6134006"/>
			<xs:enumeration value="6140"/>
			<xs:enumeration value="6140001"/>
			<xs:enumeration value="6140002"/>
			<xs:enumeration value="6140003"/>
			<xs:enumeration value="6140004"/>
			<xs:enumeration value="6140005"/>
			<xs:enumeration value="6140006"/>
			<xs:enumeration value="6140007"/>
			<xs:enumeration value="6140008"/>
			<xs:enumeration value="6140009"/>
			<xs:enumeration value="6140010"/>
			<xs:enumeration value="6140011"/>
			<xs:enumeration value="6140012"/>
			<xs:enumeration value="6140013"/>
			<xs:enumeration value="6140014"/>
			<xs:enumeration value="6140015"/>
			<xs:enumeration value="6140016"/>
			<xs:enumeration value="6140017"/>
			<xs:enumeration value="6140018"/>
			<xs:enumeration value="6140019"/>
			<xs:enumeration value="6140020"/>
			<xs:enumeration value="6140021"/>
			<xs:enumeration value="6140022"/>
			<xs:enumeration value="6140023"/>
			<xs:enumeration value="6140024"/>
			<xs:enumeration value="6140025"/>
			<xs:enumeration value="6140026"/>
			<xs:enumeration value="6140027"/>
			<xs:enumeration value="6140028"/>
			<xs:enumeration value="6140029"/>
			<xs:enumeration value="6140030"/>
			<xs:enumeration value="6140031"/>
			<xs:enumeration value="6140032"/>
			<xs:enumeration value="6140033"/>
			<xs:enumeration value="6140035"/>
			<xs:enumeration value="6140036"/>
			<xs:enumeration value="6140038"/>
			<xs:enumeration value="6140039"/>
			<xs:enumeration value="6140040"/>
			<xs:enumeration value="6140041"/>
			<xs:enumeration value="6140042"/>
			<xs:enumeration value="6140043"/>
			<xs:enumeration value="6140044"/>
			<xs:enumeration value="6140045"/>
			<xs:enumeration value="6140046"/>
			<xs:enumeration value="6140047"/>
			<xs:enumeration value="6140048"/>
			<xs:enumeration value="6140049"/>
			<xs:enumeration value="6140050"/>
			<xs:enumeration value="6140051"/>
			<xs:enumeration value="6140052"/>
			<xs:enumeration value="6140053"/>
			<xs:enumeration value="6140054"/>
			<xs:enumeration value="6140055"/>
			<xs:enumeration value="6140056"/>
			<xs:enumeration value="6140057"/>
			<xs:enumeration value="6140058"/>
			<xs:enumeration value="6140059"/>
			<xs:enumeration value="6140060"/>
			<xs:enumeration value="6140061"/>
			<xs:enumeration value="6140062"/>
			<xs:enumeration value="6140063"/>
			<xs:enumeration value="6140064"/>
			<xs:enumeration value="6140065"/>
			<xs:enumeration value="6140066"/>
			<xs:enumeration value="6140067"/>
			<xs:enumeration value="6140068"/>
			<xs:enumeration value="6140069"/>
			<xs:enumeration value="6140070"/>
			<xs:enumeration value="6140071"/>
			<xs:enumeration value="6140074"/>
			<xs:enumeration value="6140075"/>
			<xs:enumeration value="6150"/>
			<xs:enumeration value="6150001"/>
			<xs:enumeration value="6150002"/>
			<xs:enumeration value="6150003"/>
			<xs:enumeration value="6150004"/>
			<xs:enumeration value="6160001"/>
			<xs:enumeration value="6160002"/>
			<xs:enumeration value="6160003"/>
			<xs:enumeration value="6160004"/>
			<xs:enumeration value="6160005"/>
			<xs:enumeration value="6160006"/>
			<xs:enumeration value="6160007"/>
			<xs:enumeration value="6160008"/>
			<xs:enumeration value="6160009"/>
			<xs:enumeration value="6160010"/>
			<xs:enumeration value="6160011"/>
			<xs:enumeration value="6160012"/>
			<xs:enumeration value="6160013"/>
			<xs:enumeration value="6160014"/>
			<xs:enumeration value="6160015"/>
			<xs:enumeration value="6160016"/>
			<xs:enumeration value="6160017"/>
			<xs:enumeration value="6160018"/>
			<xs:enumeration value="6160019"/>
			<xs:enumeration value="6160020"/>
			<xs:enumeration value="6160021"/>
			<xs:enumeration value="6160022"/>
			<xs:enumeration value="6160023"/>
			<xs:enumeration value="6160024"/>
			<xs:enumeration value="6160025"/>
			<xs:enumeration value="6160026"/>
			<xs:enumeration value="6160027"/>
			<xs:enumeration value="6160028"/>
			<xs:enumeration value="6160029"/>
			<xs:enumeration value="6160030"/>
			<xs:enumeration value="6160031"/>
			<xs:enumeration value="6160032"/>
			<xs:enumeration value="6170001"/>
			<xs:enumeration value="6170002"/>
			<xs:enumeration value="6170010"/>
			<xs:enumeration value="6180001"/>
			<xs:enumeration value="6180002"/>
			<xs:enumeration value="6180003"/>
			<xs:enumeration value="6180004"/>
			<xs:enumeration value="6180005"/>
			<xs:enumeration value="6180006"/>
			<xs:enumeration value="6180007"/>
			<xs:enumeration value="6180008"/>
			<xs:enumeration value="6205"/>
			<xs:enumeration value="6205002"/>
			<xs:enumeration value="6205003"/>
			<xs:enumeration value="6205004"/>
			<xs:enumeration value="6205005"/>
			<xs:enumeration value="8450004"/>
			<xs:enumeration value="8450005"/>
			<xs:enumeration value="8450006"/>
			<xs:enumeration value="8470010"/>
			<xs:enumeration value="8470016"/>
			<xs:enumeration value="8470019"/>
			<xs:enumeration value="8470020"/>
			<xs:enumeration value="8500009"/>
			<xs:enumeration value="8500010"/>
			<xs:enumeration value="8500011"/>
			<xs:enumeration value="8500016"/>
			<xs:enumeration value="8500017"/>
			<xs:enumeration value="8110062"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="AccountCode-TZ-Zantel">
		<xs:restriction base="xs:string">
			<xs:whiteSpace value="preserve"/>
			<xs:maxLength value="6"/>
			<xs:enumeration value="410006"/>
			<xs:enumeration value="410009"/>
			<xs:enumeration value="410011"/>
			<xs:enumeration value="420001"/>
			<xs:enumeration value="420002"/>
			<xs:enumeration value="420006"/>
			<xs:enumeration value="420007"/>
			<xs:enumeration value="420008"/>
			<xs:enumeration value="420010"/>
			<xs:enumeration value="420011"/>
			<xs:enumeration value="420012"/>
			<xs:enumeration value="420013"/>
			<xs:enumeration value="420015"/>
			<xs:enumeration value="430020"/>
			<xs:enumeration value="430021"/>
			<xs:enumeration value="430030"/>
			<xs:enumeration value="430031"/>
			<xs:enumeration value="430033"/>
			<xs:enumeration value="430034"/>
			<xs:enumeration value="430051"/>
			<xs:enumeration value="430052"/>
			<xs:enumeration value="430073"/>
			<xs:enumeration value="430075"/>
			<xs:enumeration value="430076"/>
			<xs:enumeration value="430077"/>
			<xs:enumeration value="430078"/>
			<xs:enumeration value="440002"/>
			<xs:enumeration value="440004"/>
			<xs:enumeration value="440005"/>
			<xs:enumeration value="440009"/>
			<xs:enumeration value="440010"/>
			<xs:enumeration value="440011"/>
			<xs:enumeration value="450001"/>
			<xs:enumeration value="460002"/>
			<xs:enumeration value="470011"/>
			<xs:enumeration value="470034"/>
			<xs:enumeration value="470045"/>
			<xs:enumeration value="480001"/>
			<xs:enumeration value="490001"/>
			<xs:enumeration value="490002"/>
			<xs:enumeration value="490003"/>
			<xs:enumeration value="490004"/>
			<xs:enumeration value="490005"/>
			<xs:enumeration value="490011"/>
			<!--<xs:enumeration value="690015"/>-->
			<xs:enumeration value="740001"/>
			<xs:enumeration value="910075"/>
			<xs:enumeration value="910076"/>
			<xs:enumeration value="910079"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>