updated schematrons

This commit is contained in:
jstaerk
2025-05-20 08:53:20 +02:00
parent 6059f489ef
commit 2deff800e3
5 changed files with 1164 additions and 4996 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2" schemaVersion="iso"> <?xml version="1.0" encoding="UTF-8" standalone="no"?><schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2" schemaVersion="iso">
<title>Schema for Factur-X; 1.07.2; Accounting, MINIMUM</title> <title>Schema for Factur-X; 1.07.3; Accounting, MINIMUM</title>
<ns prefix="rsm" uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"/> <ns prefix="rsm" uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"/>
<ns prefix="qdt" uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"/> <ns prefix="qdt" uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"/>
<ns prefix="ram" uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"/> <ns prefix="ram" uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"/>
@@ -63,124 +63,82 @@
<assert id="FX-SCH-A-000020" test="count(ram:TypeCode)=1"> <assert id="FX-SCH-A-000020" test="count(ram:TypeCode)=1">
Element 'ram:TypeCode' must occur exactly 1 times.</assert> Element 'ram:TypeCode' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID">
<pattern> <report test="@schemeID">
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
<report test="true()">
Attribute @schemeID' marked as not used in the given context.</report> Attribute @schemeID' marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString"> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString">
<assert id="FX-SCH-A-000021" test="@format"> <assert id="FX-SCH-A-000021" test="@format">
Attribute '@format' is required in this context.</assert> Attribute '@format' is required in this context.</assert>
</rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format]">
<let name="codeValue3" value="@format"/> <let name="codeValue3" value="@format"/>
<assert id="FX-SCH-A-000022" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=3]/enumeration[@value=$codeValue3]"> <assert id="FX-SCH-A-000022" test="string-length($codeValue3)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=3]/enumeration[@value=$codeValue3]">
Value of '@format' is not allowed.</assert> Value of '@format' is not allowed.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode"> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
<let name="codeValue2" value="."/> <let name="codeValue2" value="."/>
<assert id="FX-SCH-A-000023" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=2]/enumeration[@value=$codeValue2]"> <assert id="FX-SCH-A-000023" test="string-length($codeValue2)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=2]/enumeration[@value=$codeValue2]">
Value of 'ram:TypeCode' is not allowed.</assert> Value of 'ram:TypeCode' is not allowed.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext"> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
<assert id="FX-SCH-A-000024" test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1"> <assert id="FX-SCH-A-000024" test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert> Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
<assert id="FX-SCH-A-000025" test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1"> <assert id="FX-SCH-A-000025" test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert> Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter"> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter">
<assert id="FX-SCH-A-000019" test="count(ram:ID)=1"> <assert id="FX-SCH-A-000019" test="count(ram:ID)=1">
Element 'ram:ID' must occur exactly 1 times.</assert> Element 'ram:ID' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID">
<pattern> <report test="@schemeID">
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeID]">
<report test="true()">
Attribute @schemeID' marked as not used in the given context.</report> Attribute @schemeID' marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter"> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
<assert id="FX-SCH-A-000019" test="count(ram:ID)=1"> <assert id="FX-SCH-A-000019" test="count(ram:ID)=1">
Element 'ram:ID' must occur exactly 1 times.</assert> Element 'ram:ID' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID"> <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID">
<let name="codeValue1" value="."/> <let name="codeValue1" value="."/>
<assert id="FX-SCH-A-000026" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=1]/enumeration[@value=$codeValue1]"> <assert id="FX-SCH-A-000026" test="string-length($codeValue1)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=1]/enumeration[@value=$codeValue1]">
Value of 'ram:ID' is not allowed.</assert> Value of 'ram:ID' is not allowed.</assert>
</rule> <report test="@schemeID">
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeID]">
<report test="true()">
Attribute @schemeID' marked as not used in the given context.</report> Attribute @schemeID' marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
<assert id="FX-SCH-A-000027" test="count(ram:SellerTradeParty)=1"> <assert id="FX-SCH-A-000027" test="count(ram:SellerTradeParty)=1">
Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert> Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
<assert id="FX-SCH-A-000028" test="count(ram:BuyerTradeParty)=1"> <assert id="FX-SCH-A-000028" test="count(ram:BuyerTradeParty)=1">
Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert> Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
<assert id="FX-SCH-A-000029" test="count(ram:IssuerAssignedID)=1"> <assert id="FX-SCH-A-000029" test="count(ram:IssuerAssignedID)=1">
Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert> Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID">
<pattern> <report test="@schemeID">
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
<report test="true()">
Attribute @schemeID' marked as not used in the given context.</report> Attribute @schemeID' marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
<assert id="FX-SCH-A-000030" test="count(ram:Name)=1"> <assert id="FX-SCH-A-000030" test="count(ram:Name)=1">
Element 'ram:Name' must occur exactly 1 times.</assert> Element 'ram:Name' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
<report test="true()"> <report test="true()">
Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report> Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization">
<assert id="FX-SCH-A-000019" test="count(ram:ID)=1"> <assert id="FX-SCH-A-000019" test="count(ram:ID)=1">
Element 'ram:ID' must occur exactly 1 times.</assert> Element 'ram:ID' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID">
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
<let name="codeValue4" value="@schemeID"/> <let name="codeValue4" value="@schemeID"/>
<assert id="FX-SCH-A-000031" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=4]/enumeration[@value=$codeValue4]"> <assert id="FX-SCH-A-000031" test="string-length($codeValue4)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=4]/enumeration[@value=$codeValue4]">
Value of '@schemeID' is not allowed.</assert> Value of '@schemeID' is not allowed.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
<report test="true()"> <report test="true()">
Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report> Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
<assert id="FX-SCH-A-000030" test="count(ram:Name)=1"> <assert id="FX-SCH-A-000030" test="count(ram:Name)=1">
Element 'ram:Name' must occur exactly 1 times.</assert> Element 'ram:Name' must occur exactly 1 times.</assert>
@@ -191,73 +149,51 @@
<assert id="FX-SCH-A-000034" test="count(ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;])&lt;=1"> <assert id="FX-SCH-A-000034" test="count(ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;])&lt;=1">
Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="FC"]' may occur at maximum 1 times.</assert> Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="FC"]' may occur at maximum 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
<assert id="FX-SCH-A-000035" test="count(ram:CountryID)=1"> <assert id="FX-SCH-A-000035" test="count(ram:CountryID)=1">
Element 'ram:CountryID' must occur exactly 1 times.</assert> Element 'ram:CountryID' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID">
<let name="codeValue5" value="."/> <let name="codeValue5" value="."/>
<assert id="FX-SCH-A-000036" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=5]/enumeration[@value=$codeValue5]"> <assert id="FX-SCH-A-000036" test="string-length($codeValue5)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=5]/enumeration[@value=$codeValue5]">
Value of 'ram:CountryID' is not allowed.</assert> Value of 'ram:CountryID' is not allowed.</assert>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID">
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
<let name="codeValue4" value="@schemeID"/> <let name="codeValue4" value="@schemeID"/>
<assert id="FX-SCH-A-000031" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=4]/enumeration[@value=$codeValue4]"> <assert id="FX-SCH-A-000031" test="string-length($codeValue4)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=4]/enumeration[@value=$codeValue4]">
Value of '@schemeID' is not allowed.</assert> Value of '@schemeID' is not allowed.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ not(ram:ID/@schemeID=&quot;VA&quot;) and not(ram:ID/@schemeID=&quot;FC&quot;)]"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ not(ram:ID/@schemeID=&quot;VA&quot;) and not(ram:ID/@schemeID=&quot;FC&quot;)]">
<report test="true()"> <report test="true()">
Element variant 'ram:SpecifiedTaxRegistration[ not(ram:ID/@schemeID="VA") and not(ram:ID/@schemeID="FC")]' is marked as not used in the given context.</report> Element variant 'ram:SpecifiedTaxRegistration[ not(ram:ID/@schemeID="VA") and not(ram:ID/@schemeID="FC")]' is marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]">
<assert id="FX-SCH-A-000019" test="count(ram:ID)=1"> <assert id="FX-SCH-A-000019" test="count(ram:ID)=1">
Element 'ram:ID' must occur exactly 1 times.</assert> Element 'ram:ID' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]/ram:ID"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]/ram:ID">
<assert id="FX-SCH-A-000037" test="@schemeID"> <assert id="FX-SCH-A-000037" test="@schemeID">
Attribute '@schemeID' is required in this context.</assert> Attribute '@schemeID' is required in this context.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]">
<assert id="FX-SCH-A-000019" test="count(ram:ID)=1"> <assert id="FX-SCH-A-000019" test="count(ram:ID)=1">
Element 'ram:ID' must occur exactly 1 times.</assert> Element 'ram:ID' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]/ram:ID"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]/ram:ID">
<assert id="FX-SCH-A-000037" test="@schemeID"> <assert id="FX-SCH-A-000037" test="@schemeID">
Attribute '@schemeID' is required in this context.</assert> Attribute '@schemeID' is required in this context.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
<assert id="FX-SCH-A-000038" test="count(ram:InvoiceCurrencyCode)=1"> <assert id="FX-SCH-A-000038" test="count(ram:InvoiceCurrencyCode)=1">
Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert> Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
<assert id="FX-SCH-A-000039" test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1"> <assert id="FX-SCH-A-000039" test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert> Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode">
<let name="codeValue6" value="."/> <let name="codeValue6" value="."/>
<assert id="FX-SCH-A-000040" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=6]/enumeration[@value=$codeValue6]"> <assert id="FX-SCH-A-000040" test="string-length($codeValue6)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=6]/enumeration[@value=$codeValue6]">
Value of 'ram:InvoiceCurrencyCode' is not allowed.</assert> Value of 'ram:InvoiceCurrencyCode' is not allowed.</assert>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
<assert id="FX-SCH-A-000041" test="count(ram:TaxBasisTotalAmount)=1"> <assert id="FX-SCH-A-000041" test="count(ram:TaxBasisTotalAmount)=1">
Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert> Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
@@ -268,42 +204,28 @@
<assert id="FX-SCH-A-000044" test="count(ram:DuePayableAmount)=1"> <assert id="FX-SCH-A-000044" test="count(ram:DuePayableAmount)=1">
Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert> Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount">
<pattern> <report test="@currencyID">
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount[@currencyID]">
<report test="true()">
Attribute @currencyID' marked as not used in the given context.</report> Attribute @currencyID' marked as not used in the given context.</report>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount">
<pattern> <report test="@currencyID">
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyID]">
<report test="true()">
Attribute @currencyID' marked as not used in the given context.</report> Attribute @currencyID' marked as not used in the given context.</report>
</rule> </rule>
</pattern> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount">
<pattern> <report test="@currencyID">
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount[@currencyID]">
<report test="true()">
Attribute @currencyID' marked as not used in the given context.</report> Attribute @currencyID' marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and not(@currencyID=../../ram:TaxCurrencyCode)]"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and not(@currencyID=../../ram:TaxCurrencyCode)]">
<report test="true()"> <report test="true()">
Element variant 'ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and not(@currencyID=../../ram:TaxCurrencyCode)]' is marked as not used in the given context.</report> Element variant 'ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and not(@currencyID=../../ram:TaxCurrencyCode)]' is marked as not used in the given context.</report>
</rule> </rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode and @currencyID]">
<let name="codeValue7" value="@currencyID"/>
<assert id="FX-SCH-A-000045" test="document('FACTUR-X_MINIMUM_codedb.xml')//cl[@id=7]/enumeration[@value=$codeValue7]">
Value of '@currencyID' is not allowed.</assert>
</rule>
</pattern>
<pattern>
<rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]"> <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]">
<assert id="FX-SCH-A-000046" test="@currencyID"> <assert id="FX-SCH-A-000046" test="@currencyID">
Attribute '@currencyID' is required in this context.</assert> Attribute '@currencyID' is required in this context.</assert>
<let name="codeValue7" value="@currencyID"/>
<assert id="FX-SCH-A-000045" test="string-length($codeValue7)=0 or document('FACTUR-X_MINIMUM_codedb.xml')/codedb/cl[@id=7]/enumeration[@value=$codeValue7]">
Value of '@currencyID' is not allowed.</assert>
</rule> </rule>
</pattern> </pattern>
</schema> </schema>